Чтение локального «HKEY_CURRENT_USER» от другого пользователя, пакетная версия Windows/PowerShell

Чтение локального «HKEY_CURRENT_USER» от другого пользователя, пакетная версия Windows/PowerShell

Хорошо, это сложный вопрос, я знаю. У меня есть программное обеспечение, которое запускает скрипты проверки на всех компьютерах в сети. Я также могу создавать свои собственные скрипты. Но я обнаружил проблему, что скрипт запускается от имени определенного пользователя с правами администратора. Итак, когда мой скрипт проверяет путь реестра: Computer\HKEY_CURRENT_USER на самом деле не является реестром вошедшего в систему пользователя, а пользователем, используемым для запуска скрипта.

Есть ли способ запустить команду reg.exe внутри другого вошедшего в систему пользователя (без пароля)?

Пока что пытался:

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

Но затем я получил ошибку, что ntuser.dat используется (это потому, что другой пользователь вошел в систему)

Резюме: мне нужно проверить раздел реестра для текущего пользователя, но из скрипта, который запущен от имени другого пользователя.

решение1

Если пользователь вошел в систему, его реестр уже будет смонтирован в HKEY_USERS/%SID%.

В powershell можно настроить сопоставление с HKEY_USERS и затем получить доступ к реестру там. Если бы я хотел получить настройки Conhost для учетной записи 'system', я мог бы сделать это так.

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

Связанный контент