我需要关闭一些外部程序。需要关闭外部应用程序的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