c# - 我应该将哈希值保存到哪里以便将其存储到应用程序中?

标签 c#

基本上,我只是使用一些编码将所有密码转换为散列并将这些散列保存到文本文件中。

我想做的下一件事是读取文本文件并将其保存到应用程序中。我已经对如何读取文本文件并将其添加到我的代码中进行了一些研究,但我主要关心的是我应该将其保存到哪里以便将其存储到应用程序中?

最佳答案

您面临的问题很简单;每次“发布”程序的一个版本时,存储在 My.Settings 中的设置都会与该版本的版本号相关联。通常它们将存储在 AppData|Local|[您的公司名称]|[您的应用程序名称]|[应用程序版本号]中。

每次发布​​新版本时,都会创建一个新的设置文件夹,它通常会使用您在 My.Settings 中放置的默认设置,因此最终用户在上一个版本中设置的所有内容都会在升级时丢失。

现在,从表面上看,您可能会认为这会使 My.Settings 变得毫无用处,事实上,如果您不允许这样做,它确实会毫无用处,但幸运的是,您可以使用一个小技巧来解决这个问题。 My.Settings 有一个特殊的小方法可以帮助您完成此操作,称为升级

那么如何使用这个小技巧呢?

  1. 在 My.Settings 下创建一个新设置。将其命名为 SettingsUpdateRequired。此设置应该是 bool 类型的用户设置,并且其默认值应设置为 True。一旦设置完毕,您就不能在程序版本发布之间更改此设置。
  2. 现在,在您的主启动例程(无论在哪里)中,并且非常接近您在启动时执行的任务的顶部,添加以下代码:

enter image description here

注意:我必须将代码片段添加为图片,因为出于某种原因,SO 使用的代码格式化程序不喜欢 # 符号。

因此,本质上,您在这里所做的只是在应用程序以 Release模式运行时调用此例程。如果它是您的应用程序的全新版本(从您的特殊设置“SettingsUpdateRequired”来看,需要升级)。最终用户在上一个版本中拥有的旧设置将转移到新版本,并且然后,“SettingsUpdateRequired”值设置为 false 并保存。在您发布新版本并且最终用户保留自己的个性化设置之前,My.Settings.Upgrade 将不会再次运行。

关于c# - 我应该将哈希值保存到哪里以便将其存储到应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770601/

相关文章:

c# - .NET 的 DateTime.ToString ("R"中的错误)与 UTC 日期?

c# - 在 WPF 中绑定(bind) DTO - 我只想显示文件名。目前它正在显示 "DTO"

c# - 获取应用程序图标 ID - Monodroid

c# - 偶尔 10 毫秒的延迟是否适合 60 fps?

c# - 什么是好的(如果有的话).NET Windows 自动化库?

c# - 模拟用户代理

c# - Exchange 2013 API - 获取房间属性

c# - WPF 更改聚焦的文本框背景颜色

c# - 将两种形式作为不同的线程运行(或至少 2 种形式运行 "parallel")

c# - 为什么 IPAddress.Parse ("192.168.001.001") 工作而 IPAddress.Parse ("192.168.001.009") 不工作?