我使用以下代码替换app.config中的密码。它成功替换,但不会在内存中重新加载配置文件,因此数据集会给出错误的密码错误。 请帮忙
Dim vrTextFind As String = "Password"
Dim vrTextReplaceWith As String = "PWD"
Dim path As String = "D:\VS2008\EncTest\EncTest\bin\Debug\enctest.exe.config"
Dim readText As String = File.ReadAllText(path)
TextBox1.Text = readText
'Find
Dim idx As Integer = 0
idx = TextBox1.Text.IndexOf(vrTextFind, idx)
If idx = -1 Then
MessageBox.Show(vrTextFind & " is not in Textbox1")
Else
TextBox1.SelectionStart = idx
TextBox1.SelectionLength = vrTextFind.Length
End If
'Replace
If TextBox1.Text.Contains(TextBox1.Text) Then
TextBox1.Text = TextBox1.Text.Replace(vrTextFind, vrTextReplaceWith)
Else
MessageBox.Show(TextBox1.Text & " is not in Textbox3")
End If
'''''
'Write all back
File.WriteAllText(path, TextBox1.Text)
'Refreshes the connection string section
ConfigurationManager.RefreshSection("connectionStrings")
答案 0 :(得分:1)
在Windows应用程序app.config
中,应用程序启动时只读取一次。如果您修改它,则需要重新启动应用程序。
<强>建议强>
而不是将密码存储在app.config
中,而不是将其存储在其他文件中(如设置文件)。可以在运行时修改和读取。对于Settings
,您可以阅读MSDN。并选择User-Scope
设置。
希望这会对你有所帮助。
答案 1 :(得分:0)
而不是使用File.WriteallText使用以下代码写入app.config:
config.AppSettings.Settings.Item("ConnectionString").Value = TextBox1.Text
config.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("AppSettings")
然后再次从app.config加载连接字符串值。
Dim config As System.Configuration.Configuration
Dim fileMap As New ExeConfigurationFileMap()
fileMap.ExeConfigFilename = "Path of app.config"
config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None)
' Sets values to config file.
If config.HasFile() Then
strConnString = config.AppSettings.Settings.Item("ConnectionString").Value
End If