我正在使用以下代码启动一个可执行文件:
Process proc = new Process();
proc.StartInfo.FileName = executablePath;
proc.Start();
proc.WaitForInputIdle();
在这个调用之后proc.Id
它给了我一些整数,这不是真正的进程 ID。在任务管理器中,此进程有另一个 ID,而且我正在使用 MS UI 自动化访问此应用程序,它也返回与任务管理器中相同的 ID。所以我的问题是如何获得已启动进程的真实进程 ID?
更新
我发现在 Windows 7 上它可以正常工作并返回正确的 ID,但在 Windows XP 上却不行。可能是什么原因?
设想
应用场景如下。我有一个正在运行的嵌入式 HTTP 服务器,它不是由我实现的(这里是源代码)。客户端连接到 Web 服务器并发送运行程序的请求。在我的服务器的请求处理程序中,我只是Process.start()
用来启动请求的应用程序。作为一个 Web 服务器,该程序为连接到它的每个客户端会话创建线程(我假设是这样,因为我没有编写它)。这能以某种方式帮助识别仅存在于 Windows XP X86 Service Pack 3 上的问题吗?