Lea el "HKEY_CURRENT_USER" local de otro usuario, Windows Batch/PowerShell

Lea el "HKEY_CURRENT_USER" local de otro usuario, Windows Batch/PowerShell

Ok, es una pregunta complicada, lo sé. Tengo un software que ejecuta scripts de validación en todas las computadoras de la red. También puedo crear mis propios scripts. Pero encontré el problema de que el script se ejecuta como un usuario específico con derechos de administrador. Entonces, cuando mi secuencia de comandos verifica la ruta del registro: Computer\HKEY_CURRENT_USER no es en realidad el registro del usuario que inició sesión, sino el usuario utilizado para ejecutar la secuencia de comandos.

¿Hay alguna forma de ejecutar el comando reg.exe dentro del otro usuario que inició sesión (sin tener la contraseña)?

Hasta ahora estaba intentando:

:: Get the current console logged user 
for /F "tokens=1" %%f in ('query user ^| find "Active"') do set "ConsoleUser=%%f" 
:: clear the ">" character that sometimes is on the left of the user 
set ConsoleFinal=%ConsoleUser:*>=% 
:: enter the user folder (* at the end, if the user is part of a domain)  
cd c:\users\%ConsoleUser%*  
:: Import the other user registry reg load HKU\test ntuser.dat

Pero luego recibí el error de que ntuser.dat está en uso (eso se debe a que el otro usuario inició sesión)

En resumen: necesito verificar una clave de registro del usuario actual pero desde un script que se ejecuta en un usuario diferente.

Respuesta1

Si el usuario ha iniciado sesión, su registro ya estará montado en HKEY_USERS/%SID%.

En PowerShell, puede configurar una asignación a HKEY_USERS y luego acceder al registro allí. Si quisiera obtener la configuración de Conhost para la cuenta del 'sistema', podría hacerlo así.

PS > New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
PS > Get-ItemProperty HKU:\S-1-5-18\Console\

información relacionada