2010-06-06 55 views
0

我有一個.NET編寫的exe文件,它有一些我公開並希望公開的屬性。如何公開有關正在運行的.NET EXE的信息?

我想殼這個exe(Process.Start()),然後以某種方式引用此exe文件並獲得對這些公共屬性的訪問權限。這些屬性公開有關正在運行的exe的信息。

我知道如何殼exe。而且我知道如何從我的項目中添加對我要使用此對象的exe的引用。但我如何獲得這個正在運行的exe的屬性?

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

如果你確實知道答案,也許你可以告訴我什麼標準方法是在運行時將正在運行的exe的屬性公開給另一個應用程序。

感謝您的幫助!

回答

0

您的EXE可以託管WCF服務。此服務可以公開有關正在運行的EXE的這些信息的操作(而不是屬性)。

+0

謝謝約翰,我有點想我可能需要這樣。 – Doug 2010-06-06 22:59:32

1

它不這樣工作。

在進程之間共享數據的唯一方式是管道(Process.Start()可以重定向標準輸入,標準輸出和標準錯誤),共享內存(在純託管代碼中不可用),退出代碼和文件系統或網絡通信機制。

在你的具體情況下,我猜想命名管道是你想要的技術。

個人我從來沒有使用命名管道,但我已經使用重定向標準輸入和標準輸出。

1

您是否考慮過將對象暴露給PowerShell,以便您可以從PowerShell調用該對象?

公開對象:

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

然後一個PS腳本可以撥打:

$ IDLevel.ObjectName 

在這個對象,那麼你可以有一些簡單的「吸氣劑」的方法,將返回有關EXE信息。

我喜歡這種方法,因爲您不僅可以獲得信息。但如果你願意,你可以公開方法,這將允許你根據信息對對象進行更改。回。

2

做你所描述的標準「Windows方式」是暴露PerfMon counters並定期更新它們。

0

你可以寫你的第一應用一個簡單的WMI.NET提供者擴展暴露出的配置設置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來監視該名稱空間。

相關問題