Tag: 认证

为什么Win32 API函数CredEnumerate()如果我被模仿,则返回ERROR_NOT_FOUND?

我写了一些示例代码,当我在普通用户帐户的上下文中从Windows命令提示符调用时,使用CredEnumerate()转储所有用户保存的凭据。 但是,我真的希望能够从SYSTEM用户上下文中执行此操作,因此我已经从SYSTEM cmd提示符测试了我的程序。 当我以SYSTEM身份运行我的程序时,我像这样运行LogonUser: bLoggedOn = LogonUser(userName.c_str(), domain.c_str(), password.c_str(), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &userToken_); 然后我在令牌上运行ImpersonateLoggedOnUser()以给我本地用户的安全上下文。 在此之后我做: bOk = CredEnumerate(NULL, 0, &count, &pCredentials); 而且我希望这会以同样的方式返回凭据,就像我没有从系统中进入并冒充身份一样。 任何人都可以发现任何我错过的东西,真正把自己置于用户的背景中吗?