我希望我的Visual C#程序允许用户生成一个便携式.exe文件,在另一台用户的计算机上运行,portabe .exe接收第一个用户插入的值。我不想使用配置文件或任何其他文件来存储要读取的输入值,因为我希望.exe是单个文件。我有主要和第二个程序(未来的可移植可执行文件) 作为同一解决方案的不同项目。有没有办法修改便携式.exe的值或是否需要动态编译新程序?
答案 0 :(得分:2)
正式回答这个问题。
您可以将程序集转换为IL,搜索并替换和重新编译。但是,如果您正在构建此应用程序,那么您应该非常彻底地考虑这种需求和用例。
如果您只需要修改应用程序的行为,那么您有很多选择。
如果你真的很棘手,你可能会"能够追踪int的偏移并调整它。然而,这似乎非常不可靠
或者,如果您真的对此有所了解,请参阅以下相关问题
Modify Emdeded String in C# compiled exe
Is it possible to Add/Remove/Change an embedded resource in .NET DLL?
来自 Ben Voigt 评论的更新
Win32 嵌入 EXE 后,可以更改资源。 .NET
System.Resources
只能在嵌入之前更改。 C#应用程序 两种都兼容,但区别非常重要 必要的函数是UpdateResource
答案 1 :(得分:0)
您通常可以附加到.exe
而不会破坏它,然后在执行时读取数据。