別のユーザーからローカルの「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 へのマッピングを設定して、そこからレジストリにアクセスできます。「system」アカウントの Conhost 設定を取得したい場合は、次のようにします。

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

関連情報