¿Cómo puedo especificar entradas REG_EXPAND_SZ en un archivo .REG?

9

Estoy tratando de usar un script por lotes y un .regarchivo para configurar algunos servicios personalizados. La mayoría de las claves se están configurando correctamente, pero necesito configurar la DependOnServiceclave para algunos de los servicios, que normalmente es una cadena múltiple. ¿Es posible establecer esta clave desde un .regarchivo, o se requerirá la entrada manual?

MBraedley
fuente

Respuestas:

13

REG_MULTI_SZLos datos en los .regarchivos deben estar codificados en hexadecimal. Si el contenido nunca cambia, puede crear un elemento ficticio en su registro con los datos, exportarlo y ajustarlo a sus necesidades.

Si cambia, probablemente será mucho más fácil usar el regprograma incluido con Windows para agregarlo. Para hacerlo, llame regen este formato:

Reg Add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>

El interruptor separador es opcional. Si no se usa, las cadenas que se escribirán deben estar separadas por la secuencia de escape para el carácter nulo ( \0). Por ejemplo, para añadir un elemento llamado Flaira HKLM\SOFTWARE\WhizBang\Excite-O-Ramalas cuerdas foo, bary baztendría que ejecutar:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz

Para separar los datos con comas, debería ejecutar:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,

Para obtener más información, consulte Microsoft Docs para obtener el Regcomando.

Parches
fuente
44
Gran respuesta (usando un .batarchivo con regcomando en lugar de un .regarchivo), pero ¿por qué habla sobre REG_MULTI_SZ cuando la pregunta es sobre REG_EXPAND_SZ?
Norswap
0
  • dword: = DWORD
  • hex(2): = Cadena expandible
  • hex(7): = Cadena múltiple

A DWORDes un entero sin signo de 32 bits (rango decimal: 0- 4294967295) y, en el registro, a DWORDsiempre comienza con 0x8 dígitos y sigue 0x. Esto puede estar en formato decimal o hexadecimal; por ejemplo, 1000se puede escribir como 0x00001000o 0x000003e8.

DWORDSsolo puede hacer uso de los dígitos 0- 9. Las cadenas, de cualquier tipo, siempre usan ASCII, y en ACSII, 1000solo se pueden escribir como 31,30,30,30. Para el tipo de datos String, ASCII funciona en segundo plano sin que usted lo sepa porque la computadora solo comprende 1s y 0s.

Para los tipos de datos Cadena expandible y Cadena múltiple, estos guardan sus entradas como una serie de códigos ASCII en un formato hexadecimal, separados por comas y ceros hexadecimales; entonces una Cadena Expandible de 1000seríahex(2):31,00,30,00,30,00,30,00

Convirtámoslo %PROGRAMFILES%en una cadena expandible:

  1. Use una herramienta de conversión de ASCII a Hex , ingrese %PROGRAMFILES%en el cuadro de texto, delimitador de salida definido por el usuario: %seleccione Convertir y le dará:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Copie / pegue ese resultado en un editor de texto: mueva el primero %al final, encuentre / reemplace todo %con ,00,y elimine la coma al final de la cadena. Deberías obtener:
    25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
  3. Finalmente:
    hex(2):25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00

Esta lección contiene todo el conocimiento requerido para aplicar ingeniería inversa a cualquier entrada de registro codificada en hexadecimal que no esté encriptada.

DarkReverser
fuente
1
El enlace hotfile es solo un archivo 7z con una página html (que contiene el convertidor) almacenada en su interior. ¿Por qué no simplemente enlazar a la página web en sí?
John Bensin
1
Para evitar la rotura de enlaces, publique toda la información relevante en su respuesta. Para obtener más información sobre cómo responder preguntas, consulte Cómo responder
50-3