我使用CreateProcess()
函数来启动rdp客户端应用程序,使用“mstsc.exe”。之后,我想要终止它,所以我使用TerminateProcess()
函数,但是它失败了,错误代码为5。如果我将“mstsc.exe”替换为“notepad.exe”,则终止函数可以正常工作。以下是代码:
TCHAR szCommandLine[] = TEXT("mstsc.exe");
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi;
BOOL bResult = CreateProcess(NULL, szCommandLine, NULL, NULL,
FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
::Sleep(3000);
if (TerminateProcess(pi.hProcess, 0) == 0) {
printf("failed: %d", GetLastError());
}
能有人帮忙解释并解决这个问题吗?我发现pi
返回的pid与任务管理器或进程探索器中观察到的进程“mstsc.exe”的id不同。
ERROR_ACCESS_DENIED
。 - Adam Rosenfield