2010-08-08 53 views
0

鑑於您已找到想要執行函數調用的進程,是否可以調用函數並從該進程獲取返回值。 (可能使用反射或類似的東西?)使用反射來執行System.Diagnostics.Process中的函數

例如,假設我感興趣的過程總是返回的第一個過程(我知道它不會),我想要做類似如下的事情:

Process[] myProcesses = Process.GetProcesses(); 
int UserID = myProcesses[0].*GetUserID*(); 

其中GetUserID()是一個具有該進程程序集的公共靜態函數。

所有代碼都是託管代碼的

+0

我不得不質疑你爲什麼要這麼做......? – 2010-08-08 06:48:40

回答

2

不是沒有某種形式的進程間通信。 「目標」進程將不得不運行一些服務器或偵聽器(WCF,命名管道,套接字等)。您可以將Windows消息發送到另一個進程,但即使如此,其他應用程序也必須監聽它們並知道如何根據它們執行某些操作。通常用攻擊(如堆棧溢出,SQL注入等)相關

即使機構通常要求應用程序在聽或充當某種類型的服務器和攻擊利用該聽音系統的優勢

1

類,但是你不能在你描述的方式做到這一點。

它被稱爲進程間通信,並要求包含方法GetUserID()的進程通過一些進程間通信機制公開該方法 - 例如.Net遠程處理或WCF。

您可能會調用該公開方法的方式也會因方法暴露的方式而有很大不同。

這裏有一個基本的教程就如何實現這一目標使用WCF:

相關問題