Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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# 编译后如何为变量赋值(没有外部文件或数据库)?_C#_Variables_Assign - Fatal编程技术网

C# 编译后如何为变量赋值(没有外部文件或数据库)?

C# 编译后如何为变量赋值(没有外部文件或数据库)?,c#,variables,assign,C#,Variables,Assign,我想在编译后给变量赋值。 例如,我想保存计算机信息和开始日期,以及 它将此信息保存到.exe文件中,如果用户将此文件复制到另一台计算机,程序将自动比较此信息和当前计算机信息(并禁用运行) 可能吗?在不使用数据库、文件或注册表的情况下,如何将此数据保存在.exe文件中 我用的是C# 感谢您的阅读。编辑: 我在这里找到了你的答案: 你所想的问题是: -即使你的想法是可能的,也意味着在.exe第一次执行之前,它不会与任何计算机关联。因此,您将拥有“解锁”版本的exe文件。这也适用于关于在运行时修改d

我想在编译后给变量赋值。 例如,我想保存计算机信息和开始日期,以及

它将此信息保存到.exe文件中,如果用户将此文件复制到另一台计算机,程序将自动比较此信息和当前计算机信息(并禁用运行)

可能吗?在不使用数据库、文件或注册表的情况下,如何将此数据保存在.exe文件中

我用的是C#

感谢您的阅读。

编辑: 我在这里找到了你的答案:

你所想的问题是: -即使你的想法是可能的,也意味着在.exe第一次执行之前,它不会与任何计算机关联。因此,您将拥有“解锁”版本的exe文件。这也适用于关于在运行时修改dll值的(正确)注释


但是,即使可以在编译后将变量/数据保存到exe文件中,也应始终为此类数据(其他文件、注册表、数据库等)设置不同的存储库。

请参见此和此

您使用的Winforms WPF控制台是哪种.net应用程序?您谈论的是哪种计算机信息?请提供更多详细信息,您试图实现什么?您似乎正在尝试实施复制保护方案。这种欲望只会导致痛苦。把你自己从中解放出来,转而专注于生产人们想要付费的产品。这里的建议仍然将更改保存到一个单独的文件中。因此,如果他将exe文件复制到另一台计算机上,所有更改都将丢失。我不太确定。我假设您可以将信息存储在Windows可执行文件(例如PE格式)中,可以“正式”存储为元数据,也可以通过滥用一些未使用的数据等“非正式”存储。不过,我不确定您是否可以在磁盘上打开正在运行的应用程序的程序映像进行写入。(尽管网络可执行文件实际上启动了网络运行时,因此它们不是严格地“执行”自己,而是被执行。)人们当然可以打开一个已卸载的dll并对其进行操作,然后再加载它。当然,OP是否真的想这样做是另一个问题。-1-请删除这个答案,它显然是错误的,尤其是在.NET方面。使用反射,可以轻松修改.NET二进制文件,甚至可以使用非托管二进制文件进行修改(更难)。@xxbbcc这个答案的真正意义似乎是“在.exe首次执行之前,它不会与任何计算机相关联。因此,您将拥有一个“解锁”版本的exe文件。”[这意味着假想的海盗可以将其复制到另一台计算机上。]这是真的,不管实现技术如何。@Zack你说得对,但这个答案清楚地表明,这是不可能的,这是错误的。(这样做是否有用,取决于意见。)(这不是你问我的问题。)如果海报重新表述了答案,我会删除我的-1。