.net 为什么StartInfo(ProcessStartInfo)始终为空?

gopyfrb3  于 2022-12-05  发布在  .NET
关注(0)|答案(4)|浏览(135)

根据MSDN
如果未使用Start方法启动进程,则StartInfo属性不反映用于启动进程的参数。例如,如果使用GetProcesses获取计算机上运行的进程数组,则每个ProcessStartInfo属性不包含用于启动进程的原始文件名或参数。
好的,这很有道理。我的问题是为什么这些参数是空的,即使你使用Process.Start()
例如:

Dim startInfo As New ProcessStartInfo("firefox.exe")
startInfo.Arguments = "www.stackoverflow.com"
startInfo.WindowStyle = ProcessWindowStyle.Minimized
Process.Start(startInfo)
For Each proc As Process In Process.GetProcessesByName("firefox")
    Debug.Print(String.Format("ProcessID={0}; Arguments={1}", _
    proc.Id, proc.StartInfo.Arguments))
Next proc

在本例中,即使我提供了Arguments,该属性仍然为空。
怎么回事?

zysjyyx4

zysjyyx41#

您仍然在执行GetProcess,因此它继续以相同的方式工作。您启动了它的事实并没有什么不同。
Process.Start(...)返回您启动的进程。我希望如果您检查该进程的StartInfo属性,它将被填充。

yptwkmov

yptwkmov2#

您将从GetProcessesByName返回一个不同的Process示例,该示例福尔斯MSDN上语句的后一种情况。

c86crjj0

c86crjj03#

进程.StartInfo始终显示为空!!!
我得到了整个正在运行的进程列表,并试图转储StartInfo中的值,但所有100多个进程的StartInfo字段都为空。
来自MSDN:
如果您没有使用Start方法来启动处理,StartInfo属性就不会反映用来启动处理得参数.例如,如果您使用GetProcesses来获得在计算机上运行得处理数组,每个处理得StartInfo属性就不会包含用来启动处理得原始文件名或参数.
现在您必须使用WMI来获取该信息。

kqqjbcuj

kqqjbcuj4#

啊,这是令人沮丧的。我认为他们可能会使该文档更清楚一点,因为它很容易阅读,如“如果你确实使用过程。启动,那么该信息将可用”。
我想我还是得用WMI了。

相关问题