2010-12-01 13 views
6

erstellen app.config in WPF (C#)Wie zu verschlüsseln app.config?

<?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> 

verwendeten Code 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(); - verursacht Ausnahme:

{ "Fehler im Abschnitt 'connection' verschlüsseln Verwendung des Providers 'RsaProtectedConfigurationProvider'. Die Fehlermeldung vom Provider : Objekt existiert bereits. \ r \ n "}

+1

@ThiefMaster: Das ist offensichtlich falsch. – jason

+0

@ThiefMaster, ich habe das aus dem Forum gelesen ... Wie ist es gemacht? – Mediator

+0

Mögliches Duplikat: http://stackoverflow.com/questions/42115/app-config-connection-string-protection-error – Cocowalla

Antwort

-1

Sie könnten die aspnet_regiis.exe verwenden, um die Verschlüsselung für Sie durchzuführen. Siehe hierzu MSDN Link

Auf diese Weise können Sie Verschlüsselung durchführen, ohne Code zu schreiben.

+1

Das funktioniert nur mit web.config-Dateien für ASP.Net gehostete Anwendungen. –

+0

Wirklich leid..aspnet_regiis.exe hilft hier nicht .. –

+0

Es sieht eher aus wie ein Genehmigungsproblem. Können Sie versuchen, den 'DataProtectionConfigurationProvider' zu verwenden?Können Sie versuchen, Ihrer Login-ID über diesen Befehl 'aspnet_regiis -pa 'NetFrameworkConfigurationKey" {domain} \ {user} '? –

0

Ich war die gleiche Ausnahme auf Speichern bekommen. Durch Ausführen der Anwendung als Administrator konnte ich dies umgehen.

Ich habe mein Projekt eine app.manifest Datei, und änderte die Ausführungsebene in etwa so: requestedExecutionLevel level = "requireAdministrator" uiAccess = "false"

Auf diese Weise habe ich immer als Admin ausführen und haben Berechtigungen um den verschlüsselten Abschnitt zu speichern.