【问题标题】:C# Connection string save into AppData?C# 连接字符串保存到 AppData?
【发布时间】:2018-02-16 05:35:42
【问题描述】:

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

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

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

现在这适用于 VS 测试并安装在 D: 驱动器的临时文件夹中。我的问题是,如果“正确”安装到程序文件部分,那么我们现在会遇到访问被拒绝更改文件的问题。

所以有人可以为我指出正确的流程,因为我知道我做错了:

  1. 在Appdata中为用户创建一个XML,里面有constrings,这个是第一次使用时生成的,以后会用于constrings吗?

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

    1. 更好的东西,因为我一无所知,这完全不是我应该这样做的!

用于更新配置的代码:

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);

【问题讨论】:

  • 在不同的注释上,我只是愚蠢地注意到我没有在这里使用参数.. 我对所有 SQL 部分都有。这仍然容易受到 SQL 注入的影响吗?我不会这么想,因为它甚至无法连接到数据库,但我确信它的最佳做法是用不同的方式来做?

标签: c# connection-string app-config


【解决方案1】:

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

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

【讨论】:

  • 我更喜欢从程序运行,就好像数据库被移动或者计算机被重命名等等等等,我需要他们能够再次编辑它..
  • 如果我以管理员权限打开,它可以写入配置文件,但程序的其余部分仍然失败。它无法打开连接!
  • 大量错误:Namesystem.data.oledb.oledbexception (0x80004005): 'V:\websterdb.accdb" 不是有效路径。但是:如果我不是以管理员身份运行,它可以工作!并连接!! SO:管理员让我写入配置,但管理员无法打开实际连接。非管理员无法写入配置,但程序运行完美!wtf?
【解决方案2】:

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

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

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

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

对于像我这样阅读本文的菜鸟来说,这意味着程序文件中的原始 app.config 文件保持不变,但会从中提取与用户部分相关的摘录并放入 appdata。

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

【讨论】:

    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 2013-09-14
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多