为什么StartInfo(ProcessStartInfo)总是为空?

时间:2008-12-05 14:57:40

标签: .net process

根据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

是什么给出了?

4 个答案:

答案 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)

唉,这很令人沮丧。我认为他们可能会使文档更清晰,因为它很容易阅读,因为“如果你使用Process.Start,那么这些信息将可用”。

猜猜我毕竟不得不使用WMI,好吧。