我正在使用此代码启动可执行文件:
Process proc = new Process();
proc.StartInfo.FileName = executablePath;
proc.Start();
proc.WaitForInputIdle();
Run Code Online (Sandbox Code Playgroud)
在这个调用之后proc.Id它给了我一些整数,这不是真正的进程ID.在任务管理器中,此进程还有另一个ID,我也使用MS UI Automation访问此应用程序,该应用程序也返回与任务管理器中相同的ID.所以我的问题是如何获得启动过程的真实进程ID?
UPDATE
我发现在Windows 7上它工作正常并返回正确的ID,但不是在Windows XP上.可能是什么原因?
情景
该应用程序的场景如下.我有一个正在运行的嵌入式HTTP服务器,它不是由我实现的(这里是源代码).客户端连接到Web服务器并发送运行程序的请求.在我的服务器的请求处理程序中,我只是Process.start()用来启动请求的应用程序.作为Web服务器,程序为连接到它的每个客户端会话创建线程(我假设如此,因为我没有写它).这可以以某种方式帮助识别问题,因为它只存在于Windows XP X86 Service Pack 3上吗?
例如,请参阅
没有人打扰为Dispose返回的对象调用Dispose System.Diagnostics.Process.GetCurrentProcess().它应该被称为吗?请解释原因.
我有一个WPF应用程序启动几个"托管"进程,当我启动我的WPF应用程序时,它将每次启动相同的.exe进程几次使用不同的参数.
我想用不同的名称(或描述)命名每个进程 - 所以我可以检测哪个是任务管理器中的哪个(如果我想关闭其中一个).
我知道我不能为每个进程设置不同的进程ImageName - 因为它们都是相同的实际.exe文件.
有没有一种方法我至少在运行期间或在其开始时间(更改ProcessStartInfo参数或类似的东西)中更改过程描述..?
使用.Net Framework,可以在这里实现:如何获取当前的ProcessID?.
但是如何在UWP中获得当前的PorcessId?System.Diagnostics甚至没有Process类.