反映到不同的应用程序域中



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

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

任何方法:

1) 更改另一个AppDomain中的静态变量

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

我认为

您应该能够通过引导它来实现这一点。

创建一个相同类型的新应用程序(控制台、WinForms 等),将现有应用程序.EXE作为引用添加到新应用程序中,然后调用现有应用程序的入口点,它将像以前一样运行。

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

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

相关内容

  • 没有找到相关文章

最新更新