windows - 用于演示目的的 'read-only' 、 'non-removable' 应用程序安装日期的存储位置

标签 windows security winapi

我必须在客户端 PC 上的某个位置存储演示安装日期。应用程序演示期按安装日期计算。显然用户不可能编辑或删除这个值。

如何做到这一点?

  • 由于 Citrix,我们无法使用 HKLM 注册表
  • 由于 Vista 无法使用/Program Files
  • 由于 Citrix 的原因无法使用/文档和设置
  • 呃……除了询问用户“选择您想要存储安装日期的位置”之外,还剩下什么吗……:-)

解决方案是连接到服务器并在那里验证它,但这意味着需要互联网连接,这……很糟糕……

最佳答案

您可以创建一个包含日期的简单文件以及一些计算机特定信息并对其进行签名。

规则是:如果文件存在并且签名有效并且环境正确并且日期仍然有效 future ,只有这样演示才会开始。

这可以防止更改文件或使用来自不同计算机的文件。它没有涵盖问题,即人们可能会更改系统日期......


关于您的担忧 - 如果许可证文件丢失,软件将无法启动。并且用户无法创建许可证文件,他将从您那里获取它(您需要对其进行签名 - 用户只能验证签名是否正确)。您可以向他询问 MAC 地址,并将该地址添加到许可证文件中,只是为了确保该许可证文件不能在不同的计算机上使用。

关于卸载 - 用户可以保留它 - 演示期结束后的第二天它将变得毫无值(value)。

关于windows - 用于演示目的的 'read-only' 、 'non-removable' 应用程序安装日期的存储位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186870/

相关文章:

c# mono interop - 无法识别的配置部分 dllmap

android - 如何在移动应用中实现高安全性?

c++ - Active Accessibility (COM) 调用返回不同,具体取决于调用者是线程还是进程。什么?

c++ - 无法写入注册表

c - C中的标准数据结构库?

python - gi.repository Windows

mysql - 如何使用 MySQL aes_encrypt 和 aes_decrypt?

c# - Silverlight 4 剪贴板安全异常 "access is not allowed"?

c - 尝试实现任务调度程序 COM 处理程序

c++ - 如何只运行一个应用程序实例