使用反射在System.Diagnostics.Process中执行函数

时间:2010-08-08 06:46:47

标签: c# .net

鉴于您已找到要执行函数调用的进程,是否可以调用函数并从该进程获取返回值。 (可能使用反射或类似的东西?)

例如,假设我感兴趣的过程始终是返回的第一个过程(我知道它不会),我想做类似以下的事情:

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

其中GetUserID()是具有该进程程序集的公共静态函数。

所有代码都是托管代码

2 个答案:

答案 0 :(得分:2)

不是没有某种形式的进程间通信。 “目标”进程必须运行一些服务器或侦听器(WCF,命名管道,套接字等)。您可以将Windows消息发送到另一个进程,但即使这样,另一个应用程序也必须正在侦听它们并知道如何基于它们执行某些操作。

即使通常与攻击相关联的机制(例如堆栈溢出,sql注入等)通常也需要应用程序监听或充当某种类型的服务器,并且攻击利用了该监听系统

答案 1 :(得分:1)

有点,但你不能按照你描述的方式做到这一点。

它被称为进程间通信,并要求包含方法GetUserID()的进程通过某种进程间通信机制公开该方法 - 例如.Net远程处理或WCF。

然后,您可以调用该方法的方式也会有很大差异,具体取决于方法的公开方式。

这里有一个关于如何使用WCF实现此目的的基本教程: