0

这是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 应用程序中的几个不同时间,但每次我这样做时,我都会从 VerifyIsEditable 中的 .NET 的 SectionInformation.cs 中得到这个异常:

if (IsLocked) {
    throw new InvalidOperationException(SR.GetString(SR.Config_cannot_edit_configurationsection_when_locked));

所以。有没有办法(a)ProtectSection()在加载和锁定配置之前运行,或者(b)在调用之后在应用程序结束Settings.Default.Save()时刷新配置,关闭并解锁它,然后调用ProtectSection()

4

1 回答 1

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();
        }
于 2012-09-24T21:48:27.367 回答