根据MSDN:
如果您未使用开始方法启动流程,则 StartInfo 属性不会反映用于启动流程的参数。例如,如果您使用 GetProcesses 来获取计算机上运行的一系列进程,则每个进程的 StartInfo 属性不包含原始进程用于启动流程的文件名或参数。
好的,这很有道理。我的问题是,即使你使用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,该属性仍为空:
alt text http://www.sg-squared.com/images/startinfo.png
是什么给出了?
答案 0 :(得分:3)
您从GetProcessesByName获取一个不同的Process实例,该实例属于MSDN上语句的后一种情况。
答案 1 :(得分:3)
你仍然在做一个GetProcess,因此它继续工作。你开始它的事实并没有什么不同。
Process.Start(...)返回您启动的进程。我希望如果你检查它的StartInfo属性,它将被填充。
答案 2 :(得分:2)
Process.StartInfo似乎总是空的!!!
我获得了整个运行进程列表并尝试在StartInfo中转储值,但所有100多个进程的StartInfo字段都是空的。
来自MSDN:
“如果您没有使用Start方法启动进程,则StartInfo属性不会反映用于启动进程的参数。例如,如果您使用GetProcesses来获取计算机上运行的进程数组,每个进程的StartInfo属性不包含用于启动进程的原始文件名或参数。“
您现在可以使用WMI获取该信息。
答案 3 :(得分:1)
猜猜我毕竟不得不使用WMI,好吧。