将信息存储在卸载后仍然存在的文件中

时间:2011-02-07 23:17:37

标签: c# .net winforms clickonce

我正在开发一个将通过ClickOnce发布的应用程序。我一直在使用Application.ExecutablePath文件夹存储一些许可信息。现在,我希望应用程序检查更新,但每当它执行时,许可证文件就会丢失,用户需要再次输入信息。似乎ClickOnce基本上是卸载并重新安装新版本的应用程序。我可以将许可证文件保存在System文件夹中的某个位置,但这是一个丑陋的解决方案。另一个具有相同名称的文件可能已经存在于那里,或者我可能会获得访问被拒绝的异常或类似的东西。我没有试图隐藏文件。我需要无需管理员权限即可访问该文件夹。

那么,在我卸载(或更新)应用程序后,我可以保存文件的最佳和最安全的方式是什么?

2 个答案:

答案 0 :(得分:1)

我认为你应该将它存储在公共应用程序数据库中。您可以通过以下代码获取文件夹路径

Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData);

此文件夹是内置的特殊文件夹。它的主要目的是为使用相同应用程序的所有用户存储共享应用程序数据。通常,您希望在该文件夹下创建一个包含公司名称和产品名称的子文件夹,以便它不会与其他应用程序冲突。如果您不想在同一台计算机上与所有用户共享许可证密钥,则可以改为使用System.Environment.SpecialFolder.ApplicationData

答案 1 :(得分:0)

我看到许多应用程序在注册表中隐藏了他们的许可证设置 - 有时隐藏在聪明的密钥名称下。我讨厌它作为用户,但如果你想保留数据,我认为注册表是最好的。