【问题标题】:Store information in a file that persists after uninstall将信息存储在卸载后仍然存在的文件中
【发布时间】:2011-02-08 07:46:56
【问题描述】:

我正在开发一个将通过 ClickOnce 发布的应用程序。我一直在使用Application.ExecutablePath 文件夹来存储一些许可信息。现在,我希望应用程序检查更新,但无论何时,许可证文件都会丢失,用户需要再次输入信息。似乎 ClickOnce 基本上是在卸载并重新安装新版本的应用程序。我可以将许可证文件保存在系统文件夹中的某个位置,但这是一个丑陋的解决方案。那里可能已经存在另一个同名文件,或者我可能会遇到拒绝访问异常或类似的东西。我不是要隐藏文件。而且我需要在没有管理员权限的情况下访问该文件夹。

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

【问题讨论】:

  • 是时候停止使用免费版的 Visual Studio。只有先花钱才能赚钱。看看 RTM 版本中的设置和部署项目支持。
  • 你是说快捷版?我用的是专业版。如果您指的是安装和部署项目,我已经尝试过它们,而且痛苦多于帮助。到目前为止,ClickOnce 的工作方式更轻松。

标签: c# .net winforms clickonce


【解决方案1】:

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

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

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

【讨论】:

  • @jsoldi 除非您的安装程序明确执行,否则不会。这是一个内置的特殊文件夹。它的主要目的是为同一应用程序的所有用户存储共享的应用程序数据。通常,您希望在该文件夹下创建一个包含您的公司名称和产品名称的子文件夹,这样它就不会与其他应用程序冲突。如果您不想将您的许可证密钥共享给同一台机器上的所有用户,您可以改用 System.Environment.SpecialFolder.ApplicationData
【解决方案2】:

我看到许多应用程序将其许可证设置隐藏在注册表中 - 有时隐藏在巧妙的键名下。作为用户,我讨厌它,但如果您想保留数据,我认为注册表是最好的。

【讨论】:

    猜你喜欢
    • 2023-01-14
    • 2019-01-22
    • 2021-09-11
    • 2021-05-07
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    相关资源
    最近更新 更多