请经过下面的代码:了TerminateProcess()失败时在64箱机在32箱应用程序调用
LPSTR commandBuffer = "\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\"";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_MINIMIZE;
if (CreateProcess(NULL,
commandBuffer,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)) {
Sleep(5000);
UINT exitCode = 0;
if (!TerminateProcess(pi.hProcess, exitCode))
std::cout << GetLastError() << std::endl;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
在这里,当我创建一个进程,在64 32箱应用(记事本++ EXE。) bin Windows 7机器TerminateProcess()
失败,出现错误代码5(拒绝访问),但如果我在同一台机器上创建一个64位应用程序(即LPSTR commandBuffer = "\"C:\\Program Files\\depends22_x64\\depends.exe\""
)的进程,则不会出现错误。我需要了解为什么会发生这种情况,以及如何才能在64位Windows 7计算机上正确终止使用32位应用程序创建的进程。
来自CreateProcess的句柄将始终具有完全访问权限。我会冒险猜测'depends.exe'可能会自动升高,或者崩溃,或者出乎意料地行为。 –
@NineBerry:纠正了您所指出的程序错误,谢谢。我会尝试建立一个新的句柄并使用它来终止这个过程。感谢您的回应。 – Sajal