Lesen Sie das lokale „HKEY_CURRENT_USER“ von einem anderen Benutzer, Windows Batch/PowerShell

Lesen Sie das lokale „HKEY_CURRENT_USER“ von einem anderen Benutzer, Windows Batch/PowerShell

Ok, das ist eine knifflige Frage, ich weiß. Ich habe eine Software, die Validierungsskripte auf allen Computern im Netzwerk ausführt. Ich kann auch meine eigenen Skripte erstellen. Aber ich habe ein Problem festgestellt, nämlich dass das Skript als bestimmter Benutzer mit Administratorrechten ausgeführt wird. Wenn mein Skript also den Registrierungspfad überprüft: Computer\HKEY_CURRENT_USER ist nicht wirklich die Registrierung des angemeldeten Benutzers, sondern der Benutzer, der zum Ausführen des Skripts verwendet wird.

Gibt es eine Möglichkeit, den Befehl reg.exe im Namen des anderen angemeldeten Benutzers auszuführen (ohne über das Kennwort zu verfügen)?

Bisher habe ich versucht:

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

Aber dann bekomme ich die Fehlermeldung, dass die Datei ntuser.dat verwendet wird (das liegt daran, dass der andere Benutzer angemeldet ist).

Zusammenfassend: Ich muss einen Registrierungsschlüssel beim aktuellen Benutzer überprüfen, aber über ein Skript, das für einen anderen Benutzer ausgeführt wird.

Antwort1

Wenn der Benutzer angemeldet ist, ist seine Registrierung bereits in bereitgestellt HKEY_USERS/%SID%.

In Powershell könnte man eine Zuordnung zu HKEY_USERS einrichten und dann dort auf die Registrierung zugreifen. Wenn ich die Conhost-Einstellungen für das „System“-Konto abrufen möchte, könnte ich das so machen.

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

verwandte Informationen