Solución:
Si no está limitado a un lenguaje de secuencias de comandos, puede hacerlo en C # con
Registry.CurrentUser.OpenSubKey(@"softwareclassessomething", true).SetValue("some key", "sometextnothertext", RegistryValueKind.String);
Puede importar cadenas REG_SZ de varias líneas que contengan retorno de carro (CR) y saltos de línea (LF) de fin de línea (EOL) en el registro utilizando archivos .reg siempre que no le importe traducir el texto como datos codificados hexadecimales UTF-16LE . Para importar un REG_SZ con este texto:
1st Line 2nd Line
Puede crear un archivo llamado MULTILINETEXT.REG que contenga esto:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USEREnvironment] "MULTILINETEXT"=hex(1):31,00,73,00,74,00,20,00,4c,00,69,00,6e,00,65,00,0d,00,0a,00, 32,00,6e,00,64,00,20,00,4c,00,69,00,6e,00,65,00,0d,00,0a,00, 00,00
Para codificar ASCII en UTF-16LE, simplemente agregue un byte nulo después de cada valor de código ASCII. Los valores REG_SZ deben terminar con un carácter nulo (,00,00
) en notación UTF-16LE.
Importar el cambio de registro en el archivo por lotes REG.EXE IMPORT MULTILINETEXT.REG
.
El ejemplo usa la clave Entorno porque es conveniente, no porque sea particularmente útil para agregar tales datos a las variables del entorno. Se puede usar RegEdit para verificar que los datos REG_SZ importados contienen los caracteres CRLF.
Puede crear un archivo VBScript (.vbs) y simplemente llamarlo desde un archivo por lotes, asumiendo que está haciendo otras cosas en el lote además de este cambio de registro. En vbscript, estaría viendo algo como:
set WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite "HKEY_LOCAL_MACHINESOMEKEY", "value", "type"
Debería poder encontrar los posibles valores de tipo utilizando Google.