2010-12-01 20 views
6

Crear app.config en WPF (C#)Cómo cifrar 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> 

utilizado el código 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(); - provoca excepción:

{Error al cifrar la sección 'connectionStrings' " using provider 'RsaProtectedConfigurationProvider'. El mensaje de error del proveedor : El objeto ya existe. \ r \ n "}

+1

@ThiefMaster: Eso es evidentemente falso. – jason

+0

@ThiefMaster, he leído esto en el foro ... ¿Cómo se hace? – Mediator

+0

Posible duplicado: http://stackoverflow.com/questions/42115/app-config-connection-string-protection-error – Cocowalla

Respuesta

-1

Puede utilizar el aspnet_regiis.exe para realizar el cifrado. Consulte este MSDN Link

De esta forma puede realizar el cifrado sin escribir código.

+1

Eso funciona solo con archivos web.config para aplicaciones alojadas en ASP.Net. –

+0

Realmente lo siento ... 'aspnet_regiis.exe' no ayuda aquí .. –

+0

Parece más un problema de permiso. ¿Puedes intentar usar el 'DataProtectionConfigurationProvider'?¿Puedes intentar dar permiso adicional a tu ID de inicio de sesión mediante este comando 'aspnet_regiis -pa" NetFrameworkConfigurationKey "{domain} \ {user}'? –

0

que estaba recibiendo la misma excepción en Guardar. Al ejecutar la aplicación como administrador, pude evitar esto.

que añade un archivo app.manifest a mi proyecto, y le cambió el nivel de ejecución de este modo: requestedExecutionLevel level = "requireAdministrator" uiAccess = "false"

De esta manera, siempre se ejecute como administrador y tener permisos para guardar la sección encriptada