Maison > développement back-end > Tutoriel Python > Comment puis-je demander et détecter l'élévation UAC dans un script Python ?

Comment puis-je demander et détecter l'élévation UAC dans un script Python ?

DDD
Libérer: 2024-11-25 03:55:15
original
577 Les gens l'ont consulté

How Can I Request and Detect UAC Elevation in a Python Script?

Demande d'élévation UAC et détection à partir d'un script Python

Pour copier des fichiers sur Windows Vista à partir d'un script Python, il est nécessaire d'élever le nom de l'utilisateur privilèges pour contourner le contrôle de compte d’utilisateur (UAC). Voici une méthode accessible pour y parvenir :

Demande d'élévation UAC :

import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if not is_admin():
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
Copier après la connexion

Ce code vérifie si le script s'exécute avec des privilèges élevés. Sinon, il relance le script avec les droits d'administrateur.

Détection UAC :

Si la demande d'élévation UAC n'est pas réalisable, vous pouvez détecter si le script est élevé ou non. :

if is_admin():
    # Code that requires elevated privileges
else:
    print("Error: Script must be run with elevated privileges.")
    sys.exit()
Copier après la connexion

Cette approche permet de gérer le manque d'élévation avec élégance ou d'afficher un message d'avertissement au utilisateur.

Avantages de la méthode proposée :

  • Utilise des modules de bibliothèque standard (ctypes et sys), éliminant ainsi le besoin de bibliothèques externes.
  • Compatible avec Python 2 et 3.
  • Ne nécessite pas de modification des ressources du fichier ni de création de manifeste fichier.
  • Empêche l'exécution de plusieurs scripts en exécutant le code uniquement lorsque cela est nécessaire.
  • Capture la valeur de retour de l'appel API et permet la gestion des erreurs.
  • Offre une flexibilité dans la personnalisation l'affichage du processus généré.

Pour plus d'informations, consultez la documentation de l'API ShellExecute appeler.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal