Хорошо, я знаю, это сложный вопрос. У меня есть программное обеспечение, которое запускает сценарии проверки на всех компьютерах в сети. Я тоже могу создавать свои собственные сценарии. Но я обнаружил проблему в том, что сценарий запускается от имени конкретного пользователя с правами администратора. Итак, когда мой сценарий проверяет путь к реестру: 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 (это потому, что другой пользователь вошел в систему)
В резюме: мне нужно проверить раздел реестра для текущего пользователя, но из сценария, запущенного на другом пользователе.
Если пользователь вошел в систему, его реестр уже будет смонтирован в HKEY_USERS/%SID%
.
В PowerShell вы можете настроить сопоставление с HKEY_USERS, а затем получить доступ к реестру там. Если бы я хотел получить настройки Conhost для «системной» учетной записи, я мог бы сделать это так.
PS > New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
PS > Get-ItemProperty HKU:\S-1-5-18\Console\