Я использую следующий код (это пример слегка измененного MSDN), чтобы проверить, есть ли у меня права отладки для процесса. Если я не пытаюсь установить их.
int SetDebugPriv()
{
HANDLE TokenHandle;
LUID lpLuid;
TOKEN_PRIVILEGES NewState;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
{
//failed
return 0;
}
if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
{
//failed
CloseHandle(TokenHandle);
return 0;
}
NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = lpLuid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
{
//failed
CloseHandle(TokenHandle);
return 0;
}
CloseHandle(TokenHandle);
return 1;
}
Теперь под определенной учетной записью в Windows XP и 2003 я получаю сообщение об ошибке отказа в доступе при попытке установить токен. Я предполагаю, что я не могу установить этот конкретный токен, потому что у меня нет разрешения на это.
Как установить токен отладки для учетных записей без прав администратора или учетной записи с низкими привилегиями?
код приветствуется.
спасибо