我们有两个服务:一个服务是32位(process1),另一个是64位(process2)。 我们有process1用于检查process2是否正在运行的代码: 处理hProcess; RESET_WIN_ERRNO;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, ProcessId);
if (hProcess == NULL) {
os_SetWinErr(err_code);
return FALSE;
}
CloseHandle(hProcess);
return TRUE;
此代码在Windows Server 2003中正常工作,但在Windows Server 2008中不起作用。 有什么想法吗?
我读到了关于win2008中引入的服务的Session0,但在我们的例子中,两者都是服务(除非Microsoft非常讨厌将其移动到Session1),因此不存在任何访问问题。
我找到了这个帖子:http://social.msdn.microsoft.com/forums/en-US/winserver2008appcompatabilityandcertification/thread/c7d7e3fe-f8e5-49c3-a16f-8e3dec5e8cf8/ 这表明32位进程不再能够访问64位进程。 可以在这做什么?
答案 0 :(得分:0)
可能是,这是因为32位进程句柄是4bytes(sizeof指针),64bit进程句柄是8bytes(sizeof指针?)?如果是,32位进程句柄可能不会保持64位进程句柄。
答案 1 :(得分:0)
编写一个64位帮助程序,使用旧代码进行检查,并将结果作为退出代码返回。使用32位程序中的CreateProcess()运行该程序。