Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改.exe文件的变量?_C#_.net_Visual Studio_Exe - Fatal编程技术网

C# 如何更改.exe文件的变量?

C# 如何更改.exe文件的变量?,c#,.net,visual-studio,exe,C#,.net,Visual Studio,Exe,我希望我的Visual C#程序允许用户生成一个可移植的.exe文件,在另一个用户的计算机上运行,portabe.exe接收第一个用户插入的值。我不想使用配置文件或任何其他文件来存储输入值,然后再读取,因为我希望.exe是单个文件。我有主程序和第二个程序(未来的可移植可执行文件) 作为同一解决方案上的不同项目。有没有办法修改portable.exe的值,或者需要动态编译新程序?正式回答这个问题 您可以将程序集转换为IL、搜索、替换和重新编译。但是,如果你正在构建这个应用程序,你应该认真地考虑它的

我希望我的Visual C#程序允许用户生成一个可移植的.exe文件,在另一个用户的计算机上运行,portabe.exe接收第一个用户插入的值。我不想使用配置文件或任何其他文件来存储输入值,然后再读取,因为我希望.exe是单个文件。我有主程序和第二个程序(未来的可移植可执行文件)
作为同一解决方案上的不同项目。有没有办法修改portable.exe的值,或者需要动态编译新程序?

正式回答这个问题

您可以将程序集转换为IL、搜索、替换和重新编译。但是,如果你正在构建这个应用程序,你应该认真地考虑它的需要和用例。 如果您只需要修改应用程序的行为,那么您有很多选择

  • 注册表(可远程完成)
  • 配置文件(尽管您排除了这一点)
  • 您可以使用登录方法访问资源
    • 比如Wcf
    • 活动目录
    • 网络数据库
  • 为这些用户重建应用程序
  • Msbuild使用批处理文件来调整某些内容
  • 预构建脚本
如果你真的很狡猾,你“可能”能够追踪到int的偏移量并调整它。然而,这似乎很不可靠

或者,如果你真的一心想做这件事,请看以下和相关的问题

从Ben Voigt评论更新

Win32资源嵌入EXE后可以更改。网
System.Resources
只能在嵌入之前更改。C#应用程序 两者都兼容,但区别非常重要 必要的功能是


正式回答这个问题

您可以将程序集转换为IL、搜索、替换和重新编译。但是,如果你正在构建这个应用程序,你应该认真地考虑它的需要和用例。 如果您只需要修改应用程序的行为,那么您有很多选择

  • 注册表(可远程完成)
  • 配置文件(尽管您排除了这一点)
  • 您可以使用登录方法访问资源
    • 比如Wcf
    • 活动目录
    • 网络数据库
  • 为这些用户重建应用程序
  • Msbuild使用批处理文件来调整某些内容
  • 预构建脚本
如果你真的很狡猾,你“可能”能够追踪到int的偏移量并调整它。然而,这似乎很不可靠

或者,如果你真的一心想做这件事,请看以下和相关的问题

从Ben Voigt评论更新

Win32资源嵌入EXE后可以更改。网
System.Resources
只能在嵌入之前更改。C#应用程序 两者都兼容,但区别非常重要 必要的功能是


通常,您可以在不中断的情况下附加到
.exe
,然后在执行时读取数据


请参阅:

您通常可以在不中断
.exe的情况下将其附加到
.exe,然后在执行时读取数据


请参阅:

您可以嵌入资源,然后在不重新编译的情况下对其进行更改。在进一步研究之后,我应该澄清——Win32资源可以在嵌入EXE后进行更改。NET
System.Resources
只能在嵌入之前更改。C语言的应用程序与这两种应用程序兼容,但区别非常重要。必要的功能是C++示例:“非常感谢您的详细和完整的答案!您可以嵌入资源,然后在不重新编译的情况下对其进行更改。在进一步研究之后,我应该澄清——Win32资源可以在嵌入EXE后进行更改。NET
System.Resources
只能在嵌入之前更改。C语言的应用程序与这两种应用程序兼容,但区别非常重要。必要的功能是C++示例:“非常感谢您的详细和完整的答案!是的,无论是使用Win32资源函数还是使用自己的资源函数都是完全可行的。(Win32 Resource函数为您提供了一个目录/目录,因此可以按名称读取和写入资源…但使用现有方案也意味着您的数据可以通过现有工具找到)是的,使用为此目的而创建的Win32 Resource函数和滚动您自己的函数都是完全可行的。(Win32资源函数为您提供了一个目录/目录,因此可以按名称读取和写入资源…但使用现有方案也意味着您的数据可以通过现有工具找到)我不完全确定您在寻找什么,但是在没有配置文件的情况下将值传递给.exe可以通过在命令行参数中传递值来完成。@Amit合理的解决方案。。。动态重新编译exe的所有娱乐价值或内存中的黑客价值在哪里:)@Kreator会有帮助吗?请向上投票选择命令行参数和快捷方式。@Kreator仅供参考,如果您的portable.exe确实有权从web读取数据(从特定URL)您可以随时更新该URL上的值,这样您的portable.exe将在不重新编译的情况下获得更改的值!我不是100%确定您在寻找什么,但是在没有配置文件的情况下将值传递给.exe可以通过在命令行参数中传递值来完成。@Amit-sensible-solutions。。。动态重新编译exe的所有娱乐价值或内存中的黑客价值在哪里:)@Kreator会有帮助吗?请向上投票选择命令行参数和快捷方式。@Kreator仅供参考,如果您的portable.exe确实有权从web读取数据(从特定URL)您可以随时更新该URL上的值,这样您的portable.exe将在不重新编译的情况下获得更改的值