- 我为System.Data.SQLite.SQLiteConnection定义了连接字符串
- 我从未配置过RsaProtectedConfigurationProvider所以我猜这是默认的提供者和代码
'Declaration
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public NotInheritable Class RsaProtectedConfigurationProvider _
Inherits ProtectedConfigurationProvider
不需要
- 而不是使用经典代码 ToggleConfigEncryption https://msdn.microsoft.com/es-es/library/ms254494(v=vs.110).aspx
当我加载表单以加密ConnectionString部分时,我正在使用此代码:
Dim appconfig As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim constringsec As ConnectionStringsSection = appconfig.ConnectionStrings
constringsec.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")
取自https://juan-cuenca.blogspot.com.uy/2015/01/encriptar-archivos-de-configuracion.html
当我从Visual Studio运行我的应用程序时程序正常工作,我可以在我的Debug文件夹中找到该文件 myApp.exe.xml 以及文件myApp.vshost.exe.xml 都是
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sB....
</CipherData>
</EncryptedData>
所以我认为加密在调试时工作正常。
问题: - 当我在我的网络服务器上发布我的应用程序然后像任何Windows应用程序一样安装应用程序时程序仍然有效,但在我的C:\ Users \ MyUserName \ AppData \ Local \ Apps \ 2.0 \
文件myApp.exe.xml在ConnectionString部分仍然是纯文本。
(而其他文件myApp.vshost.exe.xml不存在)
我是否需要在代码或发布配置上做更多的事情? (也许一个“安装后”代码?) 或者是关于Windows权限的东西?
更新信息
现在好了它有效,但有一个额外的行为。在另一台计算机上安装和执行程序后,我在AppData \ Local \ Apps上有两个文件夹....这个文件夹中的一个加密了APP.Config而另一个没有加密。我证明删除了第二个文件,应用程序运行正常。 但是为什么在运行程序后该文件以纯文本存在?