Crear un Script para cambiar un Registro

Iniciado por javifergavilan, 19 Septiembre 2021, 18:10 PM

0 Miembros y 1 Visitante están viendo este tema.

javifergavilan

Hola Buenos dias a Todos:

Necesito Crear un Script con código para poder cambiar los valores de un Registro.

El Resgistro que quiero cambiar es :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Session Manager\SubSystems\Windows

su valor es :

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

Quiero cambiar "Windows SharedSection=1024,20480,768" por "Windows SharedSection=1024,20480,2048"

Entrando con Regedit se hacerlo pero no con código en un Script.

Necesito que maquina ejecute mas procesos y por eso necesito cambiar ese valor para que me funcione una aplicación

Si alguien puede ayudarme lo agradezco.

Gracias.

EdePC

#1
Saludos,

Puedes usar los Tokens que permite For /F, es decir, cortar en trozos la salida de un comando mediante un caracter (en este caso el la Coma y el Espacio) y luego solo tomar los trozos que uno necesite:

Código (dos) [Seleccionar]
@Echo Off
For /F "tokens=3,4,5,6,8,* delims=, " %%a In (
 'Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /V Windows'
) Do (
 Echo %%a %%b %%c,%%d,2048 %%e %%f
)
Pause


Lo cual devuelve:

Citar%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,2048 Windows=On SubSystemType=Windows
ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThrea
ds=16

---
Teniendo en cuenta que los Tokens completos serían

+-------------------------------------------------------------+--------------------+
| 1                                                           | 2                  |
+-------------------------------------------------------------+--------------------+
| HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session | Manager\SubSystems |
+-------------------------------------------------------------+--------------------+
| Windows                                                     | REG_EXPAND_SZ      |
+-------------------------------------------------------------+--------------------+

+---------------------------------+--------------------------+--------------------+
| 3                               | 4                        | 5                  |
+---------------------------------+--------------------------+--------------------+
|                                 |                          |                    |
+---------------------------------+--------------------------+--------------------+
| %SystemRoot%\system32\csrss.exe | ObjectDirectory=\Windows | SharedSection=1024 |
+---------------------------------+--------------------------+--------------------+

+-------+-----+------------+
| 6     | 7   | 8          |
+-------+-----+------------+
|       |     |            |
+-------+-----+------------+
| 20480 | 768 | Windows=On |
+-------+-----+------------+

+-------------------------------------------------------------------------------------------------------
| *                                                                                                                                    
+-------------------------------------------------------------------------------------------------------
|                                                                                                                                      
+-------------------------------------------------------------------------------------------------------
| SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
+-------------------------------------------------------------------------------------------------------


La primera línea se pierde (obvia) porque no tiene el token 3

Para que haga la modificación en el Registro debes cambiar el Echo por un Reg Add así:

Código (dos) [Seleccionar]
@Echo Off
For /F "tokens=3,4,5,6,8,* delims=, " %%a In (
 'Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /V Windows'
) Do (
 Echo %%a %%b %%c,%%d,2048 %%e %%f
 Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /V Windows /T REG_EXPAND_SZ /D "%%a %%b %%c,%%d,2048 %%e %%f" /F
)
Pause


También recuerda que como se está modificando un valor de HKLM será necesario ejecutar el Script con permisos de Administrador

javifergavilan

Muchisimas Gracias...

Me va perfecto, siempre que le des permisos de administrador.

un saludo.