如何公开有关正在运行的.NET exe的信息?

时间:2010-06-06 22:09:45

标签: vb.net

我有一个我编写的.NET exe文件,它有一些我公开并希望公开的属性。

我想要shell这个exe(Process.Start()),然后以某种方式引用这个exe并获取对这些公共属性的访问权限。这些属性公开有关正在运行的exe的信息。

我知道如何对exe进行shell。我知道如何添加对我想要使用此对象的项目的exe的引用。但是,如何访问此运行exe的属性?

我希望我能很好地解释自己。

如果您确实知道答案,也许您可​​以告诉我在运行时将正在运行的exe的属性暴露给另一个应用程序的标准方法是什么。

感谢您的帮助!

5 个答案:

答案 0 :(得分:1)

这不起作用。

在进程之间共享数据的唯一方法是管道(Process.Start()可以重定向标准输入,标准输出和标准错误),共享内存(在纯托管代码中不可用),退出代码和文件系统或网络通信机制。

在您的具体情况下,我猜测命名管道是您想要的技术。

我个人从未使用过命名管道,但我使用了重定向标准输入和标准输出。

答案 1 :(得分:1)

您是否考虑过将对象公开给PowerShell,以便可以从PowerShell调用该对象?

公开对象:

   runspace.SessionStateProxy.SetVariable("ObjectName", ObjectName)

然后PS脚本可以调用:

  $ IDLevel.ObjectName

在这个对象中,您可以使用一些简单的“getter”方法来返回有关exe的信息。

我喜欢这种方法,因为你不仅可以获得信息。但是如果需要,可以公开允许您根据信息对对象进行更改的方法。返回。

答案 2 :(得分:1)

执行您所描述的操作的标准“Windows方式”是公开PerfMon counters并定期更新它们。

答案 3 :(得分:0)

您的EXE可以托管WCF服务。此服务可以公开可以公开有关正在运行的EXE的信息的操作(而不是属性)。

答案 4 :(得分:0)

您可以为您的第一个应用程序编写一个简单的WMI.NET Provider Extension,将配置设置公开给WMI ...然后其他程序可以监视和更改设置......

WMI.NET提供商扩展方案
http://msdn.microsoft.com/en-us/library/bb885141(v=vs.90).aspx

如何通过WMI公开配置设置
http://msdn.microsoft.com/en-us/library/bb404687(v=vs.90).aspx

Windows有许多不同的提供程序用于监视和管理Windows设置。您可以为应用程序注册新的命名空间,然后在另一个.NET应用程序中使用PowerShell或System.Management.Instrumentation来监视该命名空间。