【发布时间】:2021-01-04 16:23:00
【问题描述】:
假设有两个函数,一个打印“hello”,另一个打印“world”,我在主函数中调用这两个函数。现在,当我编译它时,它会创建一个 .exe 文件。当我第一次运行这个 .exe 时,这两个函数都会打印“hello world”。这个 .exe 被终止了。
但如果我第二次或多次运行相同的.exe,则只需执行一个函数,即。它应该只打印“世界”。我想要一段只应该运行一次的代码或函数,之后它应该会自行销毁,并且无论我运行多少次应用程序(.exe)都不应再次执行
我可以通过访问本地或windows注册表来实现这一点,并一次写入一些值,并且可以检查该值是否存在,无需执行这段代码或函数。
我可以在没有任何外部帮助的情况下实现应用程序本身应该能够执行此行为吗? 任何想法表示赞赏。感谢阅读
【问题讨论】:
-
您可以这样做的唯一方法是修改可执行文件以设置值。这样的构造是非常系统特定的并且很可能是脆弱的。最好将状态存储在外部文件中。
-
你需要在某个地方存储一些状态——比如在文件或数据库中或其他任何地方——你的程序会检查它,看看它是否已经运行过一次。否则,程序的每次执行都不知道该程序的任何先前执行。除非您专门编写代码来创建和检查此类持久性内存,否则程序没有先前运行的“内存”。
-
为什么要写一个自毁程序?
-
@KevinBoone 好吧,我的应用程序在更新时,我的 ApplicationUpgrader.exe 第一次删除了一些文件。然后在第二次更新期间,我不希望 ApplicationUpgrader.exe 删除这些文件。我唯一的解决方案是在第一次更新期间在注册表中写入值并检查第二次更新中是否存在值。好吧,我想避免这些步骤,并在第一次更新时为其编写一次性代码。
-
我认为比让程序自行修改更简洁的解决方案是为其配备足够的逻辑来计算每次执行时需要执行的步骤。
标签: c++ c visual-studio