从另一个应用程序更改应用程序的变量

时间:2014-11-21 05:38:55

标签: c# memory

我有一个关于从另一个应用程序更改应用程序变量的问题。

例如:如果在 1.exe 中我定义了string a="a",我将如何通过使用其他应用程序更改a="a" to a="b"

我是否必须获取字符串的内存地址,然后将其内容更改为b?或者还有其他更简单的方法吗?

3 个答案:

答案 0 :(得分:2)

您可以为这两个应用程序设置共享资源,并从那里读取值。它可以是数据库,缓存甚至是简单的文本文件。

在适当的时候从共享资源刷新变量。

答案 1 :(得分:2)

鉴于您提到的场景(即您不控制第一个应用程序的代码)..使用管理员权限打开目标进程,查找要更新的内存位置,然后更新它的一般想法适用..

然而,请注意,它通常不会那么简单。例如,

  • 应用程序逻辑可以很难预测变量的数量,以及在哪里?

  • 在不拆解代码的情况下(绝不是一项简单的任务......这一切都没有),扫描值并猜测内存位置是唯一可以想到的选择。但它有可能做出错误的猜测,并腐蚀整个过程。


PS - 有免费提供的软件,它试图完全按照我上面描述的那样进行操作。我建议您尝试检查它们的工作方式(它们支持的方案),以获得更好的想法你想要完成的事情。

PPS - 同样小心下载的内容。如果从不可靠的网站下载这些应用程序,可能会造成破坏性/安全风险。

答案 2 :(得分:1)

我认为最简单的方法是通过UDP或TCP与localhost中的网络套接字进行通信。它为您提供了一个良好的事件机制,因此您可以轻松处理数据而无需经常检查新的数据更改,也无论应用程序的数量如何在同一时间相互通信也无关紧要。其他解决方案如共享内存等将难以控制,尤其是当您运行三个或更多应用程序时。