锁定时无法保护配置

时间:2012-09-24 19:51:24

标签: .net encryption configuration

这是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()

1 个答案:

答案 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();
        }