Leia "HKEY_CURRENT_USER" local de outro usuário, Windows batch/powershell

Leia "HKEY_CURRENT_USER" local de outro usuário, Windows batch/powershell

Ok, é uma pergunta complicada, eu sei. Tenho um software que executa scripts de validação em todos os computadores da rede. Também posso criar meus próprios scripts. Mas encontrei um problema: o script é executado como um usuário específico com direitos de administrador. Portanto, quando meu script verifica o caminho do registro: Computer\HKEY_CURRENT_USER não é realmente o registro do usuário logado, mas o usuário usado para executar o script.

Existe alguma maneira de executar o comando reg.exe dentro do outro usuário logado (sem ter a senha)?

Até agora estava tentando:

:: 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

Mas então recebi o erro de que o ntuser.dat está em uso (isso é porque o outro usuário está logado)

Resumindo: preciso verificar uma chave de registro no usuário atual, mas no script executado em um usuário diferente.

Responder1

Se o usuário estiver logado, seu registro já estará montado no HKEY_USERS/%SID%.

No PowerShell você pode configurar um mapeamento para HKEY_USERS e então acessar o registro lá. Se eu quisesse obter as configurações do Conhost para a conta do 'sistema', poderia fazer assim.

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

informação relacionada