Lesen HKEY CURRENT USER aus der registry in Python, Angabe des Benutzer -
In meiner Anwendung, die ich ausführen Teilprozesse unter verschiedenen Benutzerkonten. Ich muss in der Lage sein zu Lesen, die die Informationen in die Registrierung geschrieben werden, die von dieser Teilprozesse. Jeder ist zu schreiben nach HKEY_CURRENT_USER, und ich weiß, dass der name des Benutzerkontos, die Sie unter.
In Python, wie kann ich read-Werte von HKEY_CURRENT_USER für einen bestimmten Benutzer? Ich nehme an, ich muss ja irgendwie das laden der registry-Werte unter dem user-name, und Lesen Sie Sie dann von dort, aber wie?
edit: Nur um sicherzustellen, dass es klar ist, mein Python-Programm wird als Administrator ausgeführt, und ich habe Konten "user1", "user2" und "user3", die jeweils Informationen in Ihrer eigenen HKEY_CURRENT_USER. Als Administrator, wie kann ich Lesen user1 HKEY_CURRENT_USER Daten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut MSDN,
HKEY_CURRENT_USER
ist ein Zeiger aufHKEY_USERS/SID of the current user
. Sie können pywin32, um die SID für einen account-Namen. Sobald Sie dieses haben, können Sie öffnen und verwenden Sie den Registrierungs-Schlüssel (mit dem _winreg Modul.HKEY_CURRENT_USER Karten auf eine HKEY_USERS\{id} - Taste.
Versuchen Sie herauszufinden, die id durch Abgleich der HKEY_USERS{id}\Volatile Environment\USERNAME-Taste, um den Benutzernamen des Benutzers (durch aufzählen/Iteration über die {id}en, die auf dem system vorhanden). Wenn Sie die übereinstimmung finden, verwenden Sie einfach HKEY_USERS{id} als ob es war HKEY_CURRENT_USER
Wenn Sie nicht möchten, installieren Sie win32 Zeug für Python, und da sind Sie schon mit Unterprozess, können Sie built in Windows-Befehle um auf die registry-Daten, die Sie suchen.
Abfrage der SID einer bestimmten Benutzer:
wmic useraccount where name='John' get sid
Dann können Sie es verwenden, SID Abfragen andere registry-Einträge für diesen Benutzer:
reg query HKEY_USERS\[SID]
Zum Beispiel, wenn Sie wissen möchten, das gemountete Netzlaufwerke für einen bestimmten Benutzer:
reg query HKEY_USERS\S-1-5-21-4205028929-649740040-1951280400-500\Network /s /v RemotePath
Wird die Ausgabe wie folgt Aussehen:
das sollte relativ einfach zu Parsen mit Python.
Referenzen:
http://www.windows-commandline.com/get-sid-of-user/
https://superuser.com/questions/135752/list-mapped-network-drives-from-the-command-line-to-text-file