Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中读取另一个进程的命令行参数?_C#_Process_Diagnostics - Fatal编程技术网

如何在C#中读取另一个进程的命令行参数?

如何在C#中读取另一个进程的命令行参数?,c#,process,diagnostics,C#,Process,Diagnostics,如何获取另一个进程的命令行参数 使用System.Diagnostics.Processclass I的静态功能可以获得运行进程的列表,例如按名称: Process[] processList = Process.GetProcessesByName(processName); 但是,无法访问用于启动此进程的命令行。如何执行此操作?进程。StartInfo返回一个对象,该对象据称但不一定在arguments属性中包含参数。如果您的目标是Windows XP或更高版本,并且您可以负担WMI的开销

如何获取另一个进程的命令行参数

使用
System.Diagnostics.Process
class I的静态功能可以获得运行进程的列表,例如按名称:

Process[] processList = Process.GetProcessesByName(processName);

但是,无法访问用于启动此进程的命令行。如何执行此操作?

进程。StartInfo
返回一个对象,该对象据称但不一定在arguments属性中包含参数。

如果您的目标是Windows XP或更高版本,并且您可以负担WMI的开销,则可以使用WMI的,其中包含命令行属性。

这两个项目都是您的吗?您是否可以修改您试图检查的进程的源代码,使其提供命令行参数,而不是尝试从该进程之外的某个地方读取这些参数

如果未使用Start方法启动流程,则StartInfo属性不会反映用于启动流程的参数。例如,如果使用GetProcess获取计算机上运行的进程数组,则每个进程的StartInfo属性不包含用于启动进程的原始文件名或参数。(来源:)

斯图尔特的建议很好:

string wmiQuery = string.Format("select CommandLine from Win32_Process where Name='{0}'", processName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection = searcher.Get();
foreach (ManagementObject retObject in retObjectCollection)
    Console.WriteLine("[{0}]", retObject["CommandLine"]);

就我而言,它没有:(可能只有当另一个进程托管在CLR中时,这才有效。事实上,只有当该进程使用ProcessStartInfo对象从托管进程启动时,才会设置Arguments属性。不,另一个进程是Microsoft的MSiexec。您能解释一下您尝试这样做的目的吗?这可能有助于获得更好的解决方案。我想检索命令行参数用于查找应用程序的正确实例,在我的例子中是msiexec。Raymond Chen撰写的有趣文章:您应该处理对象。请注意,如果运行上述代码的进程在Unprivileged帐户下运行(如我的例子),则返回的命令行将为null(作为LocalService运行的服务)命令行返回可执行文件的完整路径。这可能是Windows7下的问题。我没有在XP下进行测试。适用于Win 7 SP1 x64。我有Admin priv.namespace System.Management.ManagementObjectSearcher,位于System.Management.dll中