Как зашифровать app.config? - PullRequest
       29

Как зашифровать app.config?

7 голосов
/ 02 декабря 2010

Создать app.config в wpf (c #)

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <clear />
    <add name="Name"
     providerName="MySql.Data"
     connectionString="Server=.net;Uid=;Pwd=H;Database=;charset=utf8;Allow Zero Datetime=true;" />
  </connectionStrings>
</configuration>

используемый код C #:

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    ConnectionStringsSection conStr = config.ConnectionStrings;
    if (!conStr.SectionInformation.IsProtected)
    {
        conStr.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
        conStr.SectionInformation.ForceSave = true;
        config.Save();
    }
    else
    {
        foreach (ConnectionStringSettings ss in conStr.ConnectionStrings)
            Console.WriteLine(ss);
        Console.Read();
    }

config.Save(); - вызывает исключение:

{"Не удалось зашифровать раздел 'connectionStrings' с помощью провайдера 'RsaProtectedConfigurationProvider. Сообщение об ошибке от Поставщик: объект уже существует. \ r \ n "}

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

Проверьте SectionInformation.ProtectSection Method

, также проверьте здесь

1 голос
/ 02 июня 2015

Я получаю такое же исключение при сохранении.Запустив приложение в качестве администратора, я смог обойти это.

Я добавил файл app.manifest в свой проект и изменил уровень выполнения следующим образом: requiredExecutionLevel level = "requireAdministrator" uiAccess = "false "

Таким образом, я всегда работаю от имени администратора и имею права на сохранение зашифрованного раздела.

0 голосов
/ 02 декабря 2010

Вы можете использовать aspnet_regiis.exe для шифрования. Обратитесь к этому MSDN Link

Таким образом, вы можете выполнять шифрование без написания кода.

...