使用replace方法更改密码

时间:2012-02-06 12:00:10

标签: vb.net

我使用以下代码替换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")

2 个答案:

答案 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