如何为单个系统(机器)制作Windows应用程序

时间:2010-09-07 11:27:16

标签: c# visual-studio-2008

我想为桌面应用程序制作.exe,它只能在整个生命中使用过一次。没有人可以运行它两次。

5 个答案:

答案 0 :(得分:5)

你不能可靠地做到这一点。

你可以尝试一些简单的东西,比如在注册表中编写一个魔术键或在某个地方存储魔法文件,但像Process Monitor这样的简单工具会向拥有Google技能的任何人展示你的魔法标记。

您可以尝试在终止时删除.exe,但如果用户在执行文件之前复制,则会再次松开。

您可以编写一个root-kit来阻止系统启动您的应用程序两次,但这不是很好,它也可以被检测和规避。

您可以创建一个在线服务,其中您的应用程序需要检查一次性执行许可证,但是这可能会被破解,并且您将在跟踪一次性许可证时遇到大麻烦。

但最后,如果有人真的想要不止一次地运行你的应用程序,他们就会知道如何去做。

你想要多少保护?

答案 1 :(得分:1)

退出时自行删除?

答案 2 :(得分:0)

你所说的是一个可以启动的单实例应用程序,没有其他副本可以运行 - 单实例启动代码基于创建互斥锁,如果运行另一个副本,它会检查是否互斥锁被分配,如果是,它会立即退出并退出。请查看CodeProject上与您正在寻找的文章完全相同的文章。

答案 3 :(得分:0)

可以使用DPAPI调用(ProtectedData Class)的组合将值推入注册表以进行第二次检查,或者在第一次运行时编码值并检查结果是否与您想要的机器匹配它要运行(如果没有则退出)。

DataProtectionScope.LocalMachine。受保护数据的结果几乎总是每台机器不同,因此这可以作为特定机器检查。

答案 4 :(得分:0)

您可以创建一个注册表项。如果密钥存在中止执行。