.net NET是否可以检查其他正在运行的程序的命令行参数?
我们有一个有趣的案例,我们试图确定我们的应用程序的不同实例是如何启动的。NET是否有任何方法可以查询另一个正在运行的实例并获得传递给该实例的命令行参数?到目前为止,我还没有在.NET中找到任何方法来实现这一点,所以我想我应该在这里检查一下,看看以前是否有人做过类似的事情。一般来说,这些变量存储在程序的内存空间中,您应该(理论上)无法访问 您需要了解如何启动和其他实例和交易数据的进程间通信。命名管道是一个很好的选择,但您可能希望开始一个新的stackoverflow问题,以获得关于此问题的好选项.net NET是否可以检查其他正在运行的程序的命令行参数?,.net,command-line,parameters,.net,Command Line,Parameters,我们有一个有趣的案例,我们试图确定我们的应用程序的不同实例是如何启动的。NET是否有任何方法可以查询另一个正在运行的实例并获得传递给该实例的命令行参数?到目前为止,我还没有在.NET中找到任何方法来实现这一点,所以我想我应该在这里检查一下,看看以前是否有人做过类似的事情。一般来说,这些变量存储在程序的内存空间中,您应该(理论上)无法访问 您需要了解如何启动和其他实例和交易数据的进程间通信。命名管道是一个很好的选择,但您可能希望开始一个新的stackoverflow问题,以获得关于此问题的好选项
-Adam您可以通过WMI检索此信息
请参见该类,特别是其命令行属性。这提供了如何实现这一点的指针,供将来参考,下面是我如何使其工作的代码片段。这只是为了测试它是如何工作的。实际实现的代码解析我们需要的命令行参数
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)
{}
}
}