После успешного вызова обоих LogonUser и ImpersonateLoggedOnUser не похоже, что мой процесс работает как новый пользователь ...
система ( "Whoami");
распечатывает:
Chris-PC \ Chris
когда это должно быть:
Chris-PC \ LimitedGuy
Есть ли функция, которую я не вызываю или что-то в этом роде?
Мой код:
if(argc == 6) // impersonate
{
printf("[~] Logging in as %ws\\\\%ws..\n", argv[3], argv[4]);
if(!LogonUser(argv[4], argv[3], argv[5], LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &logonToken))
{
printf("[!] Failed to login as %ws. Error Code: %X\n", argv[4], GetLastError());
return 1;
}
if(!ImpersonateLoggedOnUser(logonToken))
{
printf("[!] ImpersonateLoggedOnUser failed with error code: %X\n", GetLastError());
return 1;
}
LoadUserProfile(logonToken, &plinfo);
system("whoami");
printf("[~] Login successful!\n");
}