.NET可以检查其他运行程序的命令行参数吗?

时间:2008-09-04 17:34:27

标签: .net command-line parameters

我们有一个有趣的案例,我们正在尝试确定应用程序的不同实例是如何启动的。有没有办法让.NET能够查询另一个正在运行的实例并获取传递给该实例的命令行参数?到目前为止,我还没有找到任何方法在.NET中这样做,所以我想我会在这里查看是否有人之前做过这样的事情。

3 个答案:

答案 0 :(得分:4)

您可以通过WMI检索此信息。

请参阅Win32_Process类,特别是其命令行属性。这个Code Project article提供了有关如何执行此操作的指示,

答案 1 :(得分:2)

通常这些变量存储在程序的存储空间中,您应该(理论上)应该无法访问它。

您需要了解如何启动与其他实例和交易数据的进程间通信。命名管道是一个不错的选择,但您可能想要启动一个新的stackoverflow问题以获得良好的选项。

- 亚当

答案 2 :(得分:0)

以供参考,以下是我如何使用它的代码片段。这只是一个测试,看看它是如何工作的。实际实现的代码解析命令行参数以满足我们的需要。

try
{
   ManagementScope connectScope = new ManagementScope();
   connectScope.Path = new ManagementPath(@"\\" + Environment.MachineName + @"\root\CIMV2");

   SelectQuery msQuery = new SelectQuery("SELECT * FROM Win32_Process Where Name = '" + "PROGRAMNAMEHERE.exe" + "'");
   ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(connectScope, msQuery);

   foreach (ManagementObject item in searchProcedure.Get())
   {
      try 
      {
         MessageBox.Show(item["CommandLine"].ToString()); 
      }
      catch (SystemException) 
      {}
   }
}