Я написал некоторый пример кода, который при вызове из командной строки Windows в контексте обычной учетной записи пользователя сбрасывает все сохраненные учетные данные пользователя с помощью CredEnumerate (). Однако я действительно хочу сделать это из пользовательского контекста SYSTEM, поэтому я протестировал свою программу из командной строки SYSTEM.
Когда я запускаю свою программу как 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);
И я ожидаю, что это вернет учетные данные так же, как если бы я не входил из системы и не выдавал себя за другого. Может ли кто-нибудь определить, что я пропустил, чтобы действительно поставить себя в контекст пользователя?