2011-10-15 11 views
7

Actualmente estoy usando Microsoft.Win32.Registry funciones para crear, eliminar, establecidos obtener valores /, etc. ¿Hay alguna manera de 'exportar' una cierta clave que contiene parámetros de la aplicación a una ¿Archivo .REG?claves de registro que exportan a un archivo .reg en C#

+0

relacionados https://stackoverflow.com/a/16317193/492 –

Respuesta

0

Otra forma podría ser el uso de PowerShell para esto. También puede ejecutar scripts ps desde C#. Here es un ejemplo de una secuencia de comandos ps que exporta a un archivo .reg.

4

Se podía p/PInvoke RegSaveKeyEx.

+0

Sí, esta es la manera de hacerlo. Muy simple de hecho. –

1

he descubierto que cuando se trata de crear un archivo REG válida es necesario seguir ciertas reglas:

Su archivo debe contener esta como la primera línea:

"Windows Registry Editor Version 5.00"

  1. en la siguiente línea añadir la ruta completa de la clave entre corchetes

  2. añadir los correspondientes pares de nombre/valor, cada uno en su propia línea. el formato es:

    • "ValueName" = "Value" (tipo SZ)
    • "ValueName" = dword:00000000 (tipo DWORD - siempre de 8 dígitos)

Para BINARY, MULTI_SZ, EXPAND_SZ ... no puedo bastante comento ya que no he trabajado con ellos.

  1. repetición 2 y 3 según sea necesario añadir más llaves/subclaves

Tenga en cuenta que sólo he utilizado este para exportar/modificar los valores de cadena (SZ); aquí hay un poco de ayuda que funciona muy bien, para la exportación de un solo valor:

private void ExportRegistryKey(string RegistryKeyPath, string ValueName, string Value, string ExportFileName = "ExportedRegValue.reg") 
    { 
     string regTemplate = @"Windows Registry Editor Version 5.00\r\n[{0}]\r\n""{1}""=""{2}"""; 
     string regFileContent = string.Format(regTemplate, RegistryKeyPath, ValueName, Value); 
     File.WriteAllText(ExportFileName, regFileContent); 
     return true; 
    } 

caso de que necesite para exportar varios valores, se puede cambiar la función para tomar un diccionario, usando el nombre del valor como clave y los valores reales como valores, luego haciendo un bucle mientras se agrega a la variable regFileContent.

Cuestiones relacionadas