15,471
社区成员
发帖
与我相关
我的任务
分享
OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
这个函数调用出错,GetLastError(是5):”拒绝访问“。 看的网上解决的办法是提升权限,
HANDLE hProcessToken = NULL;
BOOL b = SetPrivilege(hProcessToken, SE_DEBUG_NAME, TRUE);
HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
if(ProcessHandle)
{
BOOL bTerminate = TerminateProcess(ProcessHandle, 0);
}
还是一样的错误?我该怎么解决呀?
DWORD id = FindAppProcessID(_T("SafeSite.exe"));
if(id != -1)
{
if(AfxMessageBox(_T("SafeSite已在运行!\n请先关闭程序才能进行更新!\n如果选择确定将强行关闭程序!"),MB_OKCANCEL)==IDOK)
{
HANDLE hProcessToken = NULL;
BOOL b = SetPrivilege(hProcessToken, SE_DEBUG_NAME, TRUE);
HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
if(ProcessHandle)
{
BOOL bTerminate = TerminateProcess(ProcessHandle, 0);
}
}
}
DWORD CAppUpdateDlg::FindAppProcessID(CString strAppName)
{
HANDLE handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
PROCESSENTRY32 Info;
Info.dwSize = sizeof(PROCESSENTRY32);
if(::Process32First(handle,&Info))
{
do{
CString ss=Info.szExeFile;
if(!ss.CompareNoCase(strAppName))
{
::CloseHandle(handle);
return Info.th32ProcessID;
}
}
while(::Process32Next(handle,&Info));
::CloseHandle(handle);
}
return -1;
}