2
我正在使用下面的代碼(這是MSDN稍微修改的示例)來檢查我是否對進程具有調試特權。如果我不嘗試設置它們。在非特權帳戶(C,Windows)上調整令牌
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的某個帳戶下,當嘗試設置令牌時,出現拒絕訪問錯誤。我的猜測是,我無法設置該特定的令牌,因爲我沒有權限這樣做。 如何在非管理員帳戶或具有低權限的帳戶上設置調試令牌?
代碼表示讚賞。
謝謝
偉大謝謝 – wonderer 2009-07-31 13:25:13