2 回答

TA貢獻1827條經驗 獲得超8個贊
If the function succeeds, the return value is an open handle to the specified process.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
就是說如果函數執行成功的話返回的就是一個打開進程的句柄,如果失敗了就是NULL,具體錯誤的原因你可以調用GetLastError查看

TA貢獻1811條經驗 獲得超6個贊
如果你是用VS2008的話,可能是程序執行權限問題,可以試試這樣:
//提升程序的權限
BOOL EnablePrivilege(LPCSTR lpName, BOOL fEnable)
{
HANDLE hObject;
LUID Luid;
TOKEN_PRIVILEGES NewStatus;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
return FALSE;
if (LookupPrivilegeValue(NULL, lpName, &Luid))
{
NewStatus.Privileges[0].Luid = Luid;
NewStatus.PrivilegeCount = 1;
NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
CloseHandle(hObject);
return TRUE;
}
return FALSE;
}
OnInitDialog()中調用:
EnablePrivilege(SE_DEBUG_NAME,TRUE); //提升程序的權限
- 2 回答
- 0 關注
- 451 瀏覽
添加回答
舉報