Python - überprüfen, ob ein Benutzer Administratorrechte hat
Ich Schreibe ein kleines Programm, wie eine self-learning-Projekt in Python 3.x. Meine Idee ist, das Programm zu ermöglichen, werden zwei Felder mit text-Eintrag für den Benutzer, und stecken Sie dann die Eingabe des Benutzers in den Wert von zwei spezifischen registry keys.
Gibt es eine einfache Möglichkeit, um es zu überprüfen, ob der aktuelle Benutzer Zugriff auf die registry? Eher möchte ich es sauber dem Benutzer mitteilen, was er/Sie braucht administrator-Rechte als für das Programm auf die Nüsse gehen und Abstürzen, weil es versucht, Zugriff auf einen geschützten Bereich.
Ich es gern, um dies zu überprüfen, sobald das Programm startet, bevor der Benutzer keine Eingabe-Optionen. Welcher code wird benötigt?
Edit: falls es nicht offensichtlich ist, dies ist für die Windows-Plattformen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich brauchte ein einfaches, Windows - /Posix-Lösung zu testen, wenn ein Benutzer mit root - /Administrator-Privilegien, um die Datei-system ohne Installation eines 3rd-party-Lösung. Ich verstehe es Lücken gibt, wenn unter Berufung auf Umwelt-Variablen, aber Sie sind geeignet, mein Ziel. Es könnte möglich sein, erweitern diesen Ansatz zum Lesen/schreiben der registry.
Getestet habe ich das mit Python 2.6/2.7 unter WinXP, WinVista und Wein. Wenn jemand weiß, das wird nicht funktionieren, auf Pyton 3.x und/oder Win7, bitte beraten. Danke.
Mit pywin32, etwas wie das folgende sollte funktionieren...:
Und ja, es scheint pywin32 unterstützt Python 3.
Hier ein kurzer Artikel auf wie, um zu bestimmen, wenn eine Anwendung erhöhte Rechte erfordert.
Können Sie pywin32 oder ctypes zu tun, die Funktion CreateProcess () - Aufruf.
Schlage ich vor, ctypes, da es standard in python jetzt, und es ist ein gutes Beispiel für die Verwendung von CreateProcess mit ctypes hier.
Einfachste Möglichkeit ist zu versuchen, um den Schlüssel zu ändern am Anfang, vielleicht für einen stub-Wert - wenn das fehlschlägt, den Fehler abzufangen und dem Benutzer mitteilen.