
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\