代码之家  ›  专栏  ›  技术社区  ›  BastiBen

在windows/mac os x/linux上为许可证信息/试用版创建/保留机密文件的位置?[关闭]

  •  13
  • BastiBen  · 技术社区  · 16 年前

    我正在写一个商业产品,它使用一个简单的注册机制,允许用户在购买前使用应用程序进行演示。

    我的应用程序必须存储注册信息(如果输入)和/或首次启动的日期,以计算用户是否仍在演示/试用期内。虽然我已经基本完成了注册机制本身的工作,但现在我必须找到一种在用户磁盘上存储注册信息的好方法。

    最明显的想法是将试用期存储在preferences文件中,但是由于用户倾向于不时地删除/修改那些试用期,所以最好将注册信息保存在一个单独的、更隐藏的文件中。

    所以我的问题是:在windows、mac os x和linux上保存和创建这种隐藏文件的最佳位置/策略是什么?到目前为止,我想到的是:

    linux/mac操作系统x

    当涉及到用户可以向其写入文件的位置时,大多数类unix系统都会被锁定。在大多数情况下,这只是 /tmp 目录和用户的主目录。 我想这里最简单的方法可能是创建一个带有点前缀的文件,使其不太可见,然后给它一个名称,这样就不会使它明显地与我的应用程序相关联。

    窗户

    可能很像Linux/MacOSX——在文件系统权限方面,更新的Windows版本变得更加严格。


    不管怎样,我想听听你的想法。如果你已经实现了一些类似的东西,那就更好了。

    谢谢!


    更新

    对我来说,这些文件的位置比讨论这种保护拷贝的方式是好是坏的问题更重要。

    7 回复  |  直到 8 年前
        1
  •  4
  •   Abtin Forouzandeh    16 年前

    谁在乎你把文件放哪儿了。它是你想要保护的内容。

    在服务器端,使用私钥对用户信息进行加密/签名,并将其分发给用户。通过电子邮件发送许可证文件,让应用程序连接并下载它,不管怎样。

    在应用程序中,包括公钥。如果无法验证/解密文件,则失败。如果可以,继续运行。只有在无法验证许可证文件时,才需要重新连接到服务器。您只需要最原始的“许可服务器”来支持这一点。如果您通过电子邮件发送文件,“许可证服务器”只是一个对字符串加密并向用户发送电子邮件的脚本。

    没有什么能保护你免受黑客入侵你的应用程序的复杂企图。但是这个解决方案将拒绝临时用户破坏您的许可证的能力。

    如果要防止用户多次重新注册或与朋友共享许可证文件,请在许可证文件中记录其mac地址服务器端。就我个人而言,我不会这么做。它不会阻止老练的黑客,但你可以决定花多少时间玩猫捉老鼠的游戏。

        2
  •  1
  •   Mark Ingram    8 年前

    对于Windows,您可以尝试使用 Isolated Storage ,它将文件存储在一个产品特有的位置,该位置通常非常模糊(并且具有相当深的路径),并且具有对开发人员完全透明的优点。

        3
  •  0
  •   Ignacio Vazquez-Abrams    16 年前

    posix系统应该将应用程序数据放在用户主目录中的隐藏文件中。Windows系统应该在 CSIDL_APPDATA .

        4
  •  0
  •   martyvis    16 年前

    老实说,不管你做什么,你都会被发现的。如果您的系统是自包含的,也就是说,它不需要在运行时连接到Internet或其他设备,那么两个锁都是 和 密钥必须在代码或写入磁盘的数据中。因此,当您可以混淆密钥(甚至可能是锁)时,系统的所有者可以调用系统跟踪工具或其他任何工具来找到您。但我想你知道。每个主要的软件供应商都尝试过各种方法来实现这一点,但每次都失败了。

    我认为你唯一真正的希望是定期把你的软件手机放在家里,看看它是否还有有效的许可证。

        5
  •  0
  •   rjh    16 年前

    为了说明这种方法的问题,有一个基于linux的媒体服务器将其免费试用时间戳存储在 /usr/bin/.tv . 只需要一个 strace 如果有人意识到文件正在被访问-在这种情况下,只需删除文件就可以重新启动审判。

    如果你是一个开发人员,你将不得不花费大量的金钱和/或时间来实施一个保护计划,这个计划只需要一个人破解,每个人都可以使用。当然,您的目的可能只是为了阻止偶然的软件盗版,在这种情况下,即使是最基本的保护(如上面描述的方法)也可以做到这一点。

        6
  •  0
  •   Duncan McGregor Evgeniy Dorofeev    16 年前

    特别是在Mac上,如果是用户许可证,这种文件应该存在于~/library/application support/yourappname中,如果是机器许可证,则应该存在于/library/application support/yourappname中。

    当用户授权我的应用程序时,我会将文件写入~/library/application support/myappname,因为这不需要特殊的权限,但是如果我创建了一个机器许可证,请尝试从两个位置读取该文件,以允许使用机器许可证。

        7
  •  -1
  •   Community Mohan Dere    9 年前

    使用Windows版本的注册表。 它是为将数据保存在一个中心位置而构建的,而且作为一个额外的好处,如果用户删除了整个文件夹,则设置仍位于寄存器中(*)

    here on stackoverflow 是一篇描述如何使用Java编程语言访问ReistSsRy的文章。

    我不认为Mac有这样的东西,我知道Linux当然没有,但这是一个开始。

    (*)注册对于那些可以轻松删除属于你的应用程序的密钥的修补用户来说当然也是不安全的。