我正在使用以下代码(这是 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 上的某些帐户下,我在尝试设置令牌时收到拒绝访问错误。我的猜测是我无法设置该特定令牌,因为我无权这样做。如何在非管理员帐户或具有低权限的帐户上设置调试令牌?
代码表示赞赏。
谢谢