我想修改不是我写的.NET程序的行为。 我用ILSpy查看了相关的源代码,发现程序正在使用静态字段来加载我要更改的数据,所以我编写了一个简单的程序来反映到静态字段上,更改值,然后启动程序。
问题是,程序在启动时似乎忽略了更改! 我环顾四周,发现静态变量仅在AppDomain
内是静态的。 我怀疑这是我的问题。 我的启动器应用程序正在修改"静态"变量,但是对Process.Start
的调用创建了一个新的AppDomain
这使我的更改无关紧要。
任何方法:
1) 更改另一个AppDomain
中的静态变量
或
2)解决问题的不同方法?
您应该能够通过引导它来实现这一点。
创建一个相同类型的新应用程序(控制台、WinForms 等),将现有应用程序.EXE作为引用添加到新应用程序中,然后调用现有应用程序的入口点,它将像以前一样运行。
然后,通过反射,您应该能够绕过任何不方便的访问修饰符,以便能够修改值。
我刚刚创建了一个简短的测试应用程序来做到这一点,它工作得很好。 我不知道你的应用程序,所以我不确定杂草中有什么鳄鱼,但我认为引导会给你最好的机会。