【问题标题】:WinForms, .NET - reading settings file in compiled programWinForms,.NET - 在编译程序中读取设置文件
【发布时间】:2018-12-28 11:42:21
【问题描述】:

我想知道一旦将应用程序编译为二进制文件,从设置文件中读取信息有多容易?
我的意思是,提取设置数据使用第三方应用程序,如记事本或其他东西。

如果用户按下“记住我”,我只想让登录表单自动填充,并将加密的凭据放置在 Temp 文件夹中的某个位置。为了能够在应用程序加载后跟踪文件,我想保存用户设置文件的路径并在应用程序启动后读取它。

【问题讨论】:

  • 用户电脑上的一切都属于他,他可以阅读。但是用户首先输入了凭据,因此没有理由尝试隐藏它们。
  • 应该……至少在我看来。想想有人闯入您的计算机并能够轻松读取您存储的所有密码。不好。

标签: c# .net winforms security passwords


【解决方案1】:

昨天我遇到了同样的问题。 要保存您的数据,请执行以下操作:

string[] accountData = { nick, password };
if(checkbox.Checked)
{
     System.IO.File.WriteAllLines(@"YourFile.txt", data);
}

要在文本框中自动填充它:

string[] accountData = System.IO.File.ReadAllLines(@"YourFile.txt");
TextBox1 = accountData[0];
TextBox2 = accountData[1];

很高兴能帮到你。

编辑:我假设当您登录时,您只是将 nick 输入到 TextBox1passwordTextBox2 中,如果您只想使用 string[] accountData = { variable1, variable2, variable3, etc... } 和只读使用,则可以使用更多数据accountData[1], accountData[2], accountData[3], etc...

如果你愿意,你可以使用其他任何东西来代替txt

【讨论】:

  • 感谢您的回答,尽管这不是我要问的。我想确定,如果将临时文件路径写入设置是一种安全的做法。我知道如何做所有的自动填充和数据加密。顺便说一句,您的方法存在一些严重的安全问题 - 您将登录凭据保存为纯文本,因此任何入侵者都可以将其当作礼物。
【解决方案2】:

使用项目属性创建新设置并存储/更新设置的值。下面是截图:

您可以使用Properties.Settings.Default.YourSettingName 访问您的设置。和 Properties.Settings.Default.Save() 函数来保存设置。下面是sn-p的代码:

Properties.Settings.Default.YourSettingName = "NewSettingValue";
Properties.Settings.Default.Save();

应用程序编译后,在bin\release目录下可以设置,名称为YourApplicationName.exe.config。您可以在记事本中打开它并更改设置的值,exe 将开始使用此更新的值而无需重新编译。但是,如果它正在运行,您必须重新启动 exe 才能从 .exe.config 文件中获取更新的值。

此外,不建议在设置中存储敏感信息。希望它能达到目的。

【讨论】:

  • 请再读一遍我的问题的第二句。我不是在问如何在代码中保存或读取设置。
  • 在登录表单的加载事件中,按照我的建议从设置中读取路径。然后从此路径读取凭据并将其填写在文本框中。在登录表单上放置一个记住我的复选框。在登录按钮的单击事件中,加密密码并将其保存到您从设置中读取的路径中。在每次成功登录尝试后存储更新的密码,但如果记住我被选中。
  • 这就是我想做的。我从一开始就知道解决方案。但是我的问题的本质是第三方可以轻松地读取该路径...我的意思是,将内容存储在设置中是否安全,或者在程序编​​译后这些设置可以很容易地被人类读取。比如,设置文件是编译成某种二进制文件还是只是一个单独的文件,你可以用记事本打开并轻松阅读。
  • 应用程序编译后在bin\release目录下可用,名称为YourApplicationName.exe.config。您可以在记事本中打开它并更改设置的值,exe 将开始使用此更新的值而无需重新编译。但是,如果它正在运行,您必须重新启动 exe 才能从 .exe.config 文件中获取更新的值。
  • 这意味着在那里存储我的加密密码的路径是不安全的......这就是我想知道的。谢谢!
猜你喜欢
  • 2012-10-03
  • 2011-02-24
  • 2012-08-05
  • 2011-03-03
  • 2010-12-11
  • 2010-11-30
  • 2010-10-05
  • 2011-09-30
  • 2014-04-19
相关资源
最近更新 更多