0

我想修改我没有编写的 .NET 程序的行为。用ILSpy看了下相关源码,发现程序是用静态字段来加载我想改变的数据,所以我写了一个简单的程序反映到静态字段上,改变值,然后启动该程序。

问题是,程序启动时似乎忽略了更改!我环顾四周,发现静态变量仅在AppDomain. 我怀疑这是我的问题。我的启动器应用程序正在修改“静态”变量,但调用Process.Start创建一个新的AppDomain,这使我的更改无关紧要。

任何方式:

1)改变另一个静态变量 AppDomain

或者

2)解决问题的不同方法?

4

1 回答 1

1

我认为你应该能够通过引导它来实现这一点。

新建一个同类型的应用程序(Console、WinForms等),在新应用程序中添加已有应用程序.EXE作为引用,然后调用已有应用程序的入口点,就可以正常运行了以前做过。

然后,通过反射,您应该能够绕过任何不方便的访问修饰符,以便能够修改值。

我刚刚创建了一个简短的测试应用程序,它确实做到了这一点,并且运行良好。我不知道你的应用程序,所以我不确定杂草中有什么鳄鱼,但我认为引导程序会给你最好的机会。

于 2013-02-01T05:39:57.813 回答