我有一个任务,它有(其中包括)两个要求:
我正在使用VS9(2008)快递,我想我可以做安装程序部分,但我不知道如何做"安全"部分.我不需要任何难以破解的安全性,只是一个愚蠢的条件,将阻止大多数用户将文件复制到另一台计算机.(比如检查MAC地址).
有任何想法吗?
编辑:
我想检查MAC地址,但我希望程序在安装过程中完成.这意味着我安装后无法将程序移动到另一台机器.它也不一定非常聪明或困难,只是最低限度.我只是不知道如何在安装中做到这一点.
编辑:
很遗憾我没有完整的VS然后我可以轻松地完成它.
如果您正在寻找某种方法将第一台计算机标记为"授权"计算机,那么您需要一些外部服务,您可以请求启动权限.
第一个获得许可的人将被允许,其余的将被阻止.
您还需要提出一些方法来识别每个安装的不同应用程序的特定实例.
如果您的应用需要获得机器授权,那么您需要为每次可以使用的机器计算一些指纹(例如,跨安装).
[编辑] 当您担心分发的安装程序副本时,此方法很有用.您确实指定可以在多台计算机上安装,因此在这种情况下,MasterMind的方法更优越.它可以工作,不需要第三方服务器
[编辑2] 如果您正在寻找有关如何构建自定义安装程序的信息,请尝试此处
首先,提出一些功能来生成一个独特的PC签名,就像Windows一样用于激活.
您的安装程序将创建此签名并将其写入本地文件(更好地加密).您可以创建一个简单的控制台可执行文件来生成此文件,并将该可执行文件包含在安装程序包中,并将其设置为在成功安装后以静默方式运行.
启动时,您的程序将使用相同的算法再次创建签名,并将其与安装期间创建的算法进行比较.如果新签名与原始签名不同或签名文件丢失,则退出而不加载UI.
增加:如果您不需要它非常复杂,您可以选择一些独特的值,例如您建议的MAC地址,可能是硬盘驱动器序列号,主板序列号,将它们连接成一个字符串并生成哈希值它.
这种方法允许运行无限数量的副本(但每个安装只能在安装它的一台机器上运行).如果您坚持使用硬件(或OS产品密钥)进行识别,则应用程序可以在同一台计算机上的各种OS安装上运行.
但是,此策略意味着您可以控制所有安装(或自行执行)或绝对信任您的客户端,不要在其他位置安装其他副本或分发安装程序.如果您还需要这种保护,那么您应该考虑产品激活.如果你自己做的话可能会很复杂.然而,有第三方产品可以帮助您.有些提供产品激活服务:Google:激活服务
一旦你有一个像样的指纹,其余的很容易.就个人而言,我会采取类似MAC地址和Windows产品ID(在HKLM\Software\Microsoft\Windows\CurrentVersion\ProductId)并使用散列算法来获得合理模糊的东西.
编辑:
这是一个问题,向您展示如何将您的MAC地址作为字符串: 从.NET中的网络适配器读取MAC地址
然后从上面的注册表项中获取您的Windows产品ID(如果它们没有网络适配器).连接两个字符串并对结果执行GetHashCode()(或使用您最喜欢的散列算法).这是获取计算机UID的简单方法.
在安装程序执行时将散列写入文件或注册表项,并在程序启动时进行检查.