Visual studio 无法在app.exe.config文件中存储加密的连接字符串?

Visual studio 无法在app.exe.config文件中存储加密的连接字符串?,visual-studio,connection-string,configuration-files,password-encryption,configurationmanager,Visual Studio,Connection String,Configuration Files,Password Encryption,Configurationmanager,据我所知,如果您希望动态构建并加密连接字符串,那么如果您需要在编译后更改连接字符串,则不可能使用应用程序配置文件来存储它们 我只是想澄清一下,以下是我想要实现的目标: 我想在任何地方部署一个客户端程序,所以我不知道他们的数据库服务器名称和密码 因此,无论是谁部署该程序,都必须在以后添加连接字符串详细信息 程序的所有用户都必须使用相同的用户名访问数据库 我需要加密连接字符串,因为客户不希望密码可见 加密字符串需要包含密码 因此,我希望我的程序提示用户输入服务器名称、用户名、pwd等,然后创建连接字

据我所知,如果您希望动态构建并加密连接字符串,那么如果您需要在编译后更改连接字符串,则不可能使用应用程序配置文件来存储它们

我只是想澄清一下,以下是我想要实现的目标:

我想在任何地方部署一个客户端程序,所以我不知道他们的数据库服务器名称和密码 因此,无论是谁部署该程序,都必须在以后添加连接字符串详细信息 程序的所有用户都必须使用相同的用户名访问数据库 我需要加密连接字符串,因为客户不希望密码可见 加密字符串需要包含密码 因此,我希望我的程序提示用户输入服务器名称、用户名、pwd等,然后创建连接字符串并将其加密存储在.config文件中

以下是我对my.Settings如何处理连接字符串的理解:

程序的.config文件中的ConnectionString部分可以加密,例如,我可以正常工作

但是,要将连接字符串放入.config文件的节中,它必须作为ConnectionString存储在My.Settings中

MySettings中的连接字符串是应用程序作用域,因此不能在运行时更改它们

因此,您似乎可以加密连接字符串,但前提是您在编写程序时知道连接字符串是什么

如果您是客户,并且希望编辑ConnectionString,则无法编辑.config文件,因为该文件已加密,并且程序本身无法更改连接字符串并将其存储到.config文件中


这是正确的吗?是否无法使用app config file encryption功能来存储在运行时生成的连接字符串?

您在这里几乎没有选项。首先-对连接字符串使用机器加密。而且[我相信]如果您在每个参与服务器上设置相同的机器密钥,它甚至可以在web服务器场上工作


您可以做的另一件事是编写自定义配置节处理程序,它知道如何加密/解密特定节中的项。您需要一个可以直接写入处理程序本身的向量和键。密钥可以是您提供给客户的软件许可证密钥。您可以从序列化文件或程序集动态生成密钥。有了自定义部分,它将工作得很好,用户将更难理解从何而来以及从何而来。

感谢T.S.的评论。我认为我的.Settings无法存储由应用程序本身更改的连接字符串。因此,我将它存储到它自己的XML配置文件中,并在存储之前对密码进行了加密。微软的这一极好的例子非常有用: