C# windows上“安全”文件的最佳位置

C# windows上“安全”文件的最佳位置,c#,windows-7,special-folders,C#,Windows 7,Special Folders,我为一位客户编写了一个程序。我为他签名的XML文件实现了一种许可方法。此客户希望应用程序只在其客户的PC上安装一次,并希望我确保此安全。。。特别是因为他的执照是有时间限制的。那些电脑不能上网。 我告诉他,这绝对是愚蠢的,它无法确保这种事情,但他希望至少有一点安全 现在,我在Windows计算机上寻找一个好地方,每个用户都可以写,不需要UAC,在那里我可以存储一些秘密数据,例如上次使用的时间,这样用户就不能在PC上倒转时间 他也不能仅仅删除应用程序文件夹、推迟时间、重新安装和使用程序,也不能通过删

我为一位客户编写了一个程序。我为他签名的XML文件实现了一种许可方法。此客户希望应用程序只在其客户的PC上安装一次,并希望我确保此安全。。。特别是因为他的执照是有时间限制的。那些电脑不能上网。 我告诉他,这绝对是愚蠢的,它无法确保这种事情,但他希望至少有一点安全

现在,我在Windows计算机上寻找一个好地方,每个用户都可以写,不需要UAC,在那里我可以存储一些秘密数据,例如上次使用的时间,这样用户就不能在PC上倒转时间

他也不能仅仅删除应用程序文件夹、推迟时间、重新安装和使用程序,也不能通过删除实际用户和使用新创建的用户中的软件来实现这一点

我知道这是非常愚蠢的事情,但我的客户坚持这样做

我试着找一些地方,但到目前为止运气不好


你知道有谁知道某个目录满足这些要求吗?

我敢肯定,无论你选择哪个目录,都会破坏这个目录,所以只需使用普通的应用程序数据目录。没有一个神奇的目录可以帮助您隐藏您在许可证检查期间从中读取/写入的事实,而且只要您告诉客户这是多么不安全,我就不会花太多时间在它上

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

也许注册表会更好?是啊,这真是一个可怕的要求。也许您可以将安装日期编码到XML文件中,作为安装过程的一部分,或者以某种方式混淆它。

也许注册表会更好?是啊,这真是一个可怕的要求。也许您可以将安装日期编码到XML文件中,作为安装过程的一部分,或者以某种方式混淆它。

在过去,当我有类似的空洞要求时,我使用了注册表。我是这样做的:

在嵌入式资源中,为程序提供非对称密钥的公共部分 运行时,请检查一些稍后详细介绍的注册表项。这是第一次跑步,所以他们将缺席 向中央授权服务器发送CPU序列号和 可能是产品序列号 服务器验证之前未看到CPU/串行接口, 生成到期日期/时间。如果 他们有,拉上了旧的到期日 日期/时间。如果有效期/时间为 已通过,则不返回任何内容,否则 返回旧的日期/时间 服务器向客户端发送到期日期、时间和所有 信息过期,CPU,串行 使用私钥签名 客户端将到期日期/时间和签名数据存储在 登记处 在后续运行中,客户机获取所有信息并 将其与签名进行比较。如果 签名无效,注册表无效 信息被删除 所以,现在,如果用户在窗口之后运行程序,信息被删除,服务器将拒绝重新验证。如果他们试图使用注册表信息复制到新机器,签名检查将失败。如果它们安装在新机器上,则由于CPU序列不同,重新验证失败。你唯一不能真正涵盖的是他们是否总是调整时间,尽管你可以通过NIST检查轻松找到时间


缺点是它取决于互联网,您需要一个授权服务器。

在过去,当我有类似的空洞要求时,我会使用注册表。我是这样做的:

在嵌入式资源中,为程序提供非对称密钥的公共部分 运行时,请检查一些稍后详细介绍的注册表项。这是第一次跑步,所以他们将缺席 向中央授权服务器发送CPU序列号和 可能是产品序列号 服务器验证之前未看到CPU/串行接口, 生成到期日期/时间。如果 他们有,拉上了旧的到期日 日期/时间。如果有效期/时间为 已通过,则不返回任何内容,否则 返回旧的日期/时间 服务器向客户端发送到期日期、时间和所有 信息过期,CPU,串行 使用私钥签名 客户端将到期日期/时间和签名数据存储在 登记处 在后续运行中,客户机获取所有信息并 将其与签名进行比较。如果 签名无效,注册表无效 信息被删除 所以,现在,如果用户在窗口之后运行程序,信息被删除,服务器将拒绝重新验证。如果他们试图使用注册表信息复制到新机器,签名检查将失败。如果它们安装在新机器上,则由于CPU序列不同,重新验证失败。你唯一不能真正掩盖的是他们是否 始终调整时间,尽管您可以通过NIST检查轻松找到时间


缺点是它取决于internet,您需要一个授权服务器。

好的。我采纳了大家的一些建议: 我正在将文件放到{sys}{My GUID}\ 并为我的安装程序中的每个人授予此目录的完全权限

我想这应该是。。。好啊不知何故:

还有@NullUserException:他在付我的车钱。。。我不能解雇他:


谢谢你的回答

好的。我采纳了大家的一些建议: 我正在将文件放到{sys}{My GUID}\ 并为我的安装程序中的每个人授予此目录的完全权限

我想这应该是。。。好啊不知何故:

还有@NullUserException:他在付我的车钱。。。我不能解雇他:


谢谢你的回答

我告诉他,一定要:但他想要的是这个。至少一个与用户无关的目录。我将使用C:\Users\Public然后。。。虽然我必须检查WinXPI告诉他,这是否存在,但请确定:但他想要的是这个。至少一个与用户无关的目录。我将使用C:\Users\Public然后。。。虽然我必须检查WinXP上是否存在此问题,但任何类型的监视都会失败,但是,否则,您可以在不明显的位置创建密钥,使用GUID作为名称等。这也会在任何类型的监视中失败,但否则,您可以在不明显的位置创建密钥,使用GUID作为名称等