Reputation: 1711
According to MSDN:
If you did not use the
Start
method to start a process, theStartInfo
property does not reflect the parameters used to start the process. For example, if you useGetProcesses
to get an array of processes running on the computer, theStartInfo
property of eachProcess
does not contain the original file name or arguments used to start the process.
Okay, that makes perfect sense. My question is why are these parameters blank even when you do use Process.Start()
?
For example:
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
In this case even though I provided Arguments, that property is still empty.
What gives?
Upvotes: 8
Views: 4706
Reputation:
Process.StartInfo appears to be empty always!!!
I got entire running process list and try to dump values in StartInfo, but all 100+ processes' StartInfo fields are empty.
From MSDN:
"If you did not use the Start method to start a process, the StartInfo property does not reflect the parameters used to start the process. For example, if you use GetProcesses to get an array of processes running on the computer, the StartInfo property of each Process does not contain the original file name or arguments used to start the process."
You'll have use WMI to get that info for now.
Upvotes: 3
Reputation: 1711
Ugh, that is frustrating. I think they could probably make that documentation a little clearer as it's easy to read that as "if you do use Process.Start then that information will be available".
Guess I'll have to use WMI after all, ah well.
Upvotes: 1
Reputation: 22647
You are still doing a GetProcess, thus it continues to work the same. The fact that you started it doesn't make a difference.
Process.Start(...) returns the process that you started. I expect that if you check the StartInfo property on that, it will be populated.
Upvotes: 3
Reputation: 117230
You are getting a different Process instance back from GetProcessesByName that falls into the latter case of the statement on MSDN.
Upvotes: 4