
分かりました。これは難しい質問です。ネットワーク内のすべてのコンピューターで検証スクリプトを実行するソフトウェアがあります。独自のスクリプトを作成することもできます。しかし、スクリプトが管理者権限を持つ特定のユーザーとして実行されるという問題が見つかりました。そのため、スクリプトがレジストリ パスをチェックするとき、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 へのマッピングを設定して、そこからレジストリにアクセスできます。「system」アカウントの Conhost 設定を取得したい場合は、次のようにします。
PS > New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
PS > Get-ItemProperty HKU:\S-1-5-18\Console\