反映到不同的AppDomain

时间:2013-01-31 22:20:29

标签: .net reflection appdomain

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

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

任何方式:

1)更改另一个 AppDomain

中的静态变量

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

1 个答案:

答案 0 :(得分:1)

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

创建一个相同类型的新应用程序(Console,WinForms等),在新应用程序中添加现有应用程序.EXE作为参考,然后调用现有应用程序的入口点,它将运行就像以前一样。

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

我刚刚创建了一个简短的测试应用程序,完成了这个,它工作得很好。我不知道你的应用程序,所以我不确定鳄鱼在杂草中是什么,但我认为引导会给你最好的机会。