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 关注
- 419 浏览
添加回答
举报