我对许可证有疑问。我正在使用C#应用程序。 场景: 用户通过邮件以文件的形式获取应用程序的许可证。他/她将许可文件存储在桌面上。之后,他/她选择许可证并单击注册。现在申请已注册(许可)。 几天后,如果用户从桌面删除许可证文件。由于没有文件,应用程序将停止工作。 我想将许可证详细信息存储在注册表或文件(秘密路径)中的某个位置。但 如果该用户帐户没有足够的权限来读/写注册表或文件,该怎么办? 哪个好方法?你们知道其他方法吗? 我是这方面的新手。所以请帮助我。
提前致谢。
答案 0 :(得分:3)
所有应用程序数据都应存储在%appdata%目录中。
由于您指定了C#,以下是获取文件夹的代码:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
这将输出到以下位置: 在XP:C:/ Documents and Settings / 用户名 /应用程序数据/ 在Vista中:C:/ Users / 用户名 / AppData / Roaming
我建议您在该目录中为您的应用程序创建一个文件夹并复制到那里。
答案 1 :(得分:2)
Microsoft对Windows Vista: Application Certification and Compatibility document中的存储位置提出了一些建议。
因此,如果[您的程序]正在改变共享数据(不是CODE),那么它[数据]应该逻辑上进入ProgramData文件夹。如果它是单独的DATA,那么它可以转到用户配置文件。
我们使用许可证文件并将其存储在ProgramData \ CompanyName文件夹中。但我们的许可证是基于每台机器,而不是每个用户。默认情况下,此文件夹在Windows中隐藏,但不受UAC保护。
答案 2 :(得分:0)
正如有人在前一段时间告诉我的那样:“注册表用于应用程序与系统的交互,而不是应用程序与用户的交互。”我不知道这是否是看待事物的正确方法。我过去常常在注册表中存储用户信息,但现在不再存在。将设置放在文件中是更好的方法。如果你想存储序列号之类的东西,不要忘记加密它们。
答案 3 :(得分:0)
当然,在这种情况下,应该避免写入注册表,特别是如果可以按照您似乎描述的方式删除,添加或更改许可证。如果许可证要在安装后以某种方式被换出或更改,则最好将其写入文件。虽然,我通常不建议将任何类型的关键文件或数据写入桌面。我可能会把它写到应用程序本身的目录中包含的文件夹中。如果有必要,请将其包含在您的应用程序安装中。