Windows上“安全”文件的最佳位置

时间:2010-09-05 21:12:09

标签: c# windows-7 special-folders

我为一位客户编写了一个程序。我为他实现了许可方法(签名的XML文件)。该客户希望应用程序只在客户的PC上安装一次,并希望我“保护”这个......特别是因为他的许可证有时间限制。这些电脑没有互联网接入。 我告诉他这绝对是愚蠢的,它不能保证这种事情(例如VM),但他至少想要一点“安全”。

现在我正在寻找一个可以被每个用户(无UAC)写入的Windows机器上的好地方,在那里我可以存储一些“秘密”数据(例如上次使用),这样用户就不能回头在PC上的时间。

他也不应该只删除应用程序文件夹,缩短时间,重新安装和使用程序,也不能通过删除实际用户并使用新创建的软件来完成此操作。

我知道这真的很蠢,但我的客户坚持认为......

我尝试找到一些地方,但到目前为止没有运气。

您知道某个满足这些要求的目录吗?

4 个答案:

答案 0 :(得分:3)

也许注册表会更好?雅,这真是一个可怕的要求。也许您可以将安装日期编码到XML文件中作为安装过程的一部分,或许可以某种方式对其进行模糊处理。

答案 1 :(得分:2)

我很确定process monitor无论你选择哪个目录都会破坏它,所以只需使用一个普通的应用程序数据目录。没有魔术目录会以某种方式帮助您隐藏在许可证检查期间您正在读取/写入的事实,并且只要您告诉客户这是不安全的,我就不会花很多时间在它上面

答案 2 :(得分:1)

过去当我有类似的愚蠢要求时,我已经使用了注册表。这是我的所作所为:

  1. 在嵌入式资源中,为程序提供非对称密钥的公共部分
  2. 运行时,请检查一些注册表项(稍后详述)。这是第一次运行,所以他们将缺席
  3. 向中央许可服务器发送CPU序列号(和 可能是产品序列号)
  4. 服务器验证以前没有看过CPU /串口, 生成到期日期/时间。如果 他们有,拉起旧的到期 约会时间。如果到期日期/时间是 通过,没有返回,否则 返回旧日期/时间
  5. 服务器向客户端发送到期日期时间和所有 信息(到期,CPU,串行) 使用私钥签名
  6. 客户端将到期日期/时间和签名数据存储在 注册表
  7. 在后续运行中,客户端会获取所有信息 将它与签名进行比较。如果 签名无效,注册表 信息已删除
  8. 所以现在,如果用户在窗口后运行程序,信息将被删除,服务器将拒绝重新授权。如果他们尝试使用注册表信息复制到新计算机,则签名检查将失败。如果它们安装在新计算机上,则重新验证失败(由于CPU序列不同)。你唯一不能真正涵盖的是他们总是调整时间,尽管你可以通过NIST检查轻松找到时间。

    下行取决于互联网,您需要许可服务器。

答案 3 :(得分:1)

确定。我带了一点每个人的建议:) 我把文件放在{sys} {My-GUID} \ 并为我的设置(innosetup)中的每个人授予此目录完全权限

认为这应该......好吧......不知何故:)

和@ NullUserException:他正在付我的车......我无法解雇他:)

感谢您的回答