这是Cache password for SQL Server connection as a hash的后续行动。
http://www.codeproject.com/Articles/15392/Implementing-Protected-Configuration-With-Windows描述了本地Windows应用程序使用受保护配置的方法。但是,根据我的应用程序设计运行的环境,不需要安装程序。
我试图运行以下内容:
object settings = ConfigurationManager.GetSection("userSettings/MyApp.Properties.Settings");
SectionInformation info = ((ConfigurationSection)settings).SectionInformation;
if (!info.IsProtected)
info.ProtectSection("DPAPIProtection");
在我的WPF应用程序中的几个不同的时间,但每次我都在.NETI的VerifyIsEditable中的SectionInformation.cs中得到这个例外:
if (IsLocked) {
throw new InvalidOperationException(SR.GetString(SR.Config_cannot_edit_configurationsection_when_locked));
因此。有没有办法(a)在加载和锁定配置之前运行ProtectSection()
,或者(b)在调用Settings.Default.Save()
之后在应用程序结束时,刷新配置,关闭并解锁它,然后拨打ProtectSection()
?
答案 0 :(得分:0)
修正了它(虽然我不确定为什么,确切地说):
Configuration conf = ConfigurationManager.OpenExeConfiguration
(ConfigurationUserLevel.PerUserRoamingAndLocal);
ClientSettingsSection settings = (ClientSettingsSection)
conf.GetSection("userSettings/MyApp.Properties.Settings");
SectionInformation info = settings.SectionInformation;
if (!info.IsProtected)
{
info.ProtectSection("DPAPIProtection");
info.ForceSave = true;
conf.Save();
}