C#连接字符串保存到AppData中?

时间:2017-09-07 13:00:13

标签: c# connection-string app-config

所以我有一个DB(webster.accdb)将被安装在服务器上(例如。\ SERVER \ WEBSTER) 但是,不同的位置可能具有不同的SERVER名称(ADMIN1等)

当程序最初安装时,它检查app.config中的con字符串,我将其设置为“DEFAULT” - 字面意思是字符串。 该程序检查应用程序配置中的连接字符串,如果它是DEFAULT,则它会运行一个小提示,我要求用户提供有关服务器名称和其他一些细节的详细信息。

他们单击“connect”并将新构造的连接字符串写入app.config,并在一系列测试后加载程序。

现在,这可以在VS测试下运行,并安装在临时文件夹中的D:驱动器上。我的问题是,如果'正确'安装到programfiles部分,那么我们现在有拒绝访问的问题来改变文件。

所以有人能指出我正确的方向,因为我知道我做错了:

  1. 在Appdata中为用户创建一个XML,它有con字符串,这是在第一次使用时生成的,从那时开始用于构造?

  2. 将con字符串保存为Settings,并使用This code更新设置,然后确保我的程序中的所有con字符串不再指向配置,而是设置??

    1. 更好的东西,因为我无能为力,这完全不是我应该如何做到这一点!
  3. 用于更新配置的代码:

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            config.ConnectionStrings.ConnectionStrings["LOTSConnectionString"].ConnectionString = "Data Source=" + txtpcname.Text + ";Initial Catalog=" + cmbdispense.SelectedItem + ";Integrated Security=False;User ID=webbit;Password=ill923r6MG";
            config.Save(ConfigurationSaveMode.Modified, true);
    

2 个答案:

答案 0 :(得分:0)

Access Denied表示正在执行应用程序的用户没有权限,或者由于操作系统的内置安全性,应用程序正在受限制的权限下执行。尝试使用管理员执行应用程序,方法是右键单击并选择“运行为”。

您可以通过在安装时设置连接字符串来防止这种情况。提示用户在安装过程中输入详细信息。

答案 1 :(得分:0)

我非常承认不了解配置的USER部分的好处。 我已将连接字符串更改为“STRING”并放入“设置”的“用户”部分。

现在我可以将我的字符串称为

properties.settings.default["ConString"].tostring

然后将其保存到User / APPDATA / Local

对于像我这样阅读本文的新手,这意味着程序文件中的原始app.config文件保持相同,但会从中删除与用户部分相关的摘录并放入appdata。

让我一直感到困惑的是在设置中选择“连接字符串”,这不允许选择作为用户设置。