Compile esta aplicación de consola y arrastre un archivo de configuración a ella. Escupirá una copia del archivo de configuración con sus cadenas de conexión encriptadas.
Tenga en cuenta que debe encriptar como el mismo usuario que consumirá el archivo de configuración.
using System;
using System.Configuration;
using System.IO;
namespace ConnectionStringEncryptor
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
throw new ArgumentException("Please supply a config file to encrypt");
}
string originalConfigFilePath = args[0];
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", originalConfigFilePath);
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.SaveAs(originalConfigFilePath + ".encrypted");
}
}
}
Oded, curiosidad por saber la motivación específica para esto? – wal
@wal: requisito empresarial urgente para encriptar todas las secciones de cadena de conexión. Hecho fácilmente en los archivos 'web.config' usando' aspnet_regiis', no tan fácil con 'app.config'. – Oded
Si es urgente/rápido, entonces solo puedo sugerir cifrar el archivo completo marcando "Encriptar contenidos a datos seguros" en el archivo -> Propiedades Avanzadas. : | – wal