我需要關閉一些外部程序。需要關閉外部應用程序的Windows權限
是否我的應用程序需要管理員權限才能使用Windows API GetWindowThreadProcessId,OpenProcess和了TerminateProcess或用戶模式是足夠多?
我已經在XP和7中檢查過,並且工作正常,但我知道較新的版本更具限制性。
我用下面的代碼:
bool CloseApp(const char *WindowName)
{
HWND hWnd;
hWnd=FindWindow(nullptr,WindowName);
if(!hWnd)return(true); // Not running
DWORD pid;
GetWindowThreadProcessId(hWnd,&pid);
if(!pid)return(false);
HANDLE prc;
prc=OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE,FALSE,pid);
if(!prc)return(false);
TerminateProcess(prc,0);
DWORD rst=WaitForSingleObject(prc,10000); // Wait until completion
CloseHandle(prc);
if(FindWindow(nullptr,WindowName))return(false); // Check if still running
return(true);
}
感謝。
你需要'SE_DEBUG_PRIVILEGE'在您的令牌什麼。和調用之前啓用它'OpenProcess' – RbMm