Accorder des privilèges administratifs aux scripts Python sous Windows
L'exécution de tâches nécessitant des privilèges administratifs est nécessaire pour certaines applications. Dans ce contexte, un problème courant survient lorsque l’on tente d’exécuter des scripts Python avec des privilèges élevés. Lors de la recherche de solutions, une référence fréquemment liée conduit les utilisateurs à une question Stack Overflow traitant de l'élévation de l'UAC à partir des scripts Python.
Malgré le suivi de l'extrait de code fourni dans la question liée, de nombreux utilisateurs rencontrent des problèmes d'exécution. Cet article vise à résoudre ces difficultés et à fournir une solution complète pour exécuter des scripts avec des privilèges élevés sous Windows.
Solution mise à jour (février 2023)
La réponse originale ci-dessous a a connu des progrès significatifs et est désormais accessible sous la forme d'un module Python nommé "pyuac". Il peut être installé via PyPi :
pip install pyuac pip install pypiwin32
Exemples d'utilisation de Pyuac :
Utilisation directe :
import pyuac def main(): print("Do stuff here that requires being run as an admin.") # The window will disappear as soon as the program exits! input("Press enter to close the window. >") if __name__ == "__main__": if not pyuac.isUserAdmin(): print("Re-launching as admin!") pyuac.runAsAdmin() else: main() # Already an admin here.
Utilisation du décorateur :
from pyuac import main_requires_admin @main_requires_admin def main(): print("Do stuff here that requires being run as an admin.") # The window will disappear as soon as the program exits! input("Press enter to close the window. >") if __name__ == "__main__": main()
Réponse originale (2010)
Dans En 2010, Preston Landers a créé un module qui simplifiait la gestion de l'UAC sous Windows. En l'utilisant, vous pouvez facilement déterminer si l'utilisateur actuel est un administrateur et demander une élévation UAC si nécessaire. Son exemple d'utilisation :
import admin if not admin.isUserAdmin(): admin.runAsAdmin()
Implémentation du module :
# See module code provided in the answer text
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!