【发布时间】:2020-06-25 17:09:20
【问题描述】:
我正在尝试开发一个连接到 SQL 数据库的 C# Winform 应用程序。
我的配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="myConnNameString"
providerName="System.Data.SqlClient"
connectionString="Data Source=myServerName;Initial
Catalog=myDefDatabase;User=myUser;Password=myPassword;Application Name=myAppName" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
我能够通过以下方式成功加密此文件:
aspnet_regiis.exe -pef "connectionStrings" path_to_config_file
但是一旦我这样做了,我就不能再正常运行我的应用程序了。 现在我只能通过以管理员身份运行它来做到这一点
Cannot decrypt with provider RsaProtectedConfigurationProvider.
Cannot open key container RSA
现在据我了解: https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff650304(v=pandp.10)
我创建了一个带有机器级容器的 RSA,所以只有加密文件的机器可以 解密它,没有其他机器可以做到。
我怎样才能让其他机器也解密这个文件? 我的应用程序存储在远程网络驱动器上的单个目录中,每个人都可以访问该目录。 该应用程序通过快捷方式在他们的计算机上运行。
提前谢谢你!
编辑: 另外值得一提的是,我们公司并不是每个人都有本地管理员权限。
【问题讨论】:
-
不是直接的答案,但另一种方法是不在配置中存储单个用户名/密码的凭据,而是指定 A/D 身份验证 ( 'Trusted_Connection=True;'),然后在数据库中设置权限供A/D用户/组访问。
-
我们确实考虑过这种可能性,但是我们在访问数据库上的对象时遇到了一些严重的问题,因此我们决定创建一个具有高级权限的单个 sql 用户。
标签: c# sql-server winforms connection-string aspnet-regiis.exe