IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème de droits d'accès Python


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème de droits d'accès Python
    Bonjour à tous.

    Alors voilà, je souhaiterai faire un petit programme Python qui effacerait le contenu de certains dossiers de la session utilisateur en cours.

    Les dossiers à vider sont : Téléchargements/Documents/Images/musiques/Parties_enregistrées/Bureau et AppData>Roaming>Mozilla>Firefox (pour vider les historiques et le cache).

    L'idée est de rendre la session aussi propre qu'elle ne l'était lorsque l'utilisateur est arrivé, bref, qu'aucune trace d'utilisation ne reste à traîner.

    J'ai écrit ceci :

    import os.path
    import shutil
    print("--> Nettoyage de vos traces de navigation")

    location_rep_user=os.path.expanduser('~')#Recherche chemin du répertoire utilisateur
    contenu_rep_user=os.listdir(location_rep_user) # Cette ligne ne servira que plus tard.
    shutil.rmtree(location_rep_user+'\\'+'Music') #Essai avec le dossier musique


    Et j'obtiens cela :

    #--> Nettoyage de vos traces de navigation
    #Traceback (most recent call last):
    # File "C:\SimplyEPN.py", line 9, in <module>
    # shutil.rmtree(location_rep_user+'\\'+'Music')
    # File "C:\Python34\lib\shutil.py", line 478, in rmtree
    # return _rmtree_unsafe(path, onerror)
    # File "C:\Python34\lib\shutil.py", line 377, in _rmtree_unsafe
    # onerror(os.rmdir, path, sys.exc_info())
    # File "C:\Python34\lib\shutil.py", line 375, in _rmtree_unsafe
    # os.rmdir(path)
    #PermissionError: [WinError 5] Accès refusé: 'C:\\Users\\admin\\Music'


    En gros, je n'ai pas droit de suppression sur ce dossier. J'ai essayé d’exécuter en tant qu'administrateur et cela n'a pas donné grand chose. Le plus bizard, c'est que par l'explorateur Windows je peux tout à fait le faire.

    Autre info : Si c'est un dossier que j'ai moi-même créé, python arrive très bien à supprimer. Mais dès qu'il s'agit d'un dossier présent d'origine (même si ce n'est pas un dossier système, et même s'il n'est pas en cours d'utilisation), impossible d'y faire quoi que ce soit.

    Si quelqu'un saurait comment résoudre ce petit problème trèèès agaçant, ça m'aiderai beaucoup

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    essaye ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    #!/usr/bin/env python
    # -*- coding: utf-8; mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
    # vim: fileencoding=utf-8 tabstop=4 expandtab shiftwidth=4
     
    # (C) COPYRIGHT © Preston Landers 2010
    # Released under the same license as Python 2.6.5
     
     
    import sys, os, traceback, types
     
    def isUserAdmin():
     
        if os.name == 'nt':
            import ctypes
            # WARNING: requires Windows XP SP2 or higher!
            try:
                return ctypes.windll.shell32.IsUserAnAdmin()
            except:
                traceback.print_exc()
                print "Admin check failed, assuming not an admin."
                return False
        elif os.name == 'posix':
            # Check for root on Posix
            return os.getuid() == 0
        else:
            raise RuntimeError, "Unsupported operating system for this module: %s" % (os.name,)
     
    def runAsAdmin(cmdLine=None, wait=True):
     
        if os.name != 'nt':
            raise RuntimeError, "This function is only implemented on Windows."
     
        import win32api, win32con, win32event, win32process
        from win32com.shell.shell import ShellExecuteEx
        from win32com.shell import shellcon
     
        python_exe = sys.executable
     
        if cmdLine is None:
            cmdLine = [python_exe] + sys.argv
        elif type(cmdLine) not in (types.TupleType,types.ListType):
            raise ValueError, "cmdLine is not a sequence."
        cmd = '"%s"' % (cmdLine[0],)
        # XXX TODO: isn't there a function or something we can call to massage command line params?
        params = " ".join(['"%s"' % (x,) for x in cmdLine[1:]])
        cmdDir = ''
        showCmd = win32con.SW_SHOWNORMAL
        #showCmd = win32con.SW_HIDE
        lpVerb = 'runas'  # causes UAC elevation prompt.
     
        # print "Running", cmd, params
     
        # ShellExecute() doesn't seem to allow us to fetch the PID or handle
        # of the process, so we can't get anything useful from it. Therefore
        # the more complex ShellExecuteEx() must be used.
     
        # procHandle = win32api.ShellExecute(0, lpVerb, cmd, params, cmdDir, showCmd)
     
        procInfo = ShellExecuteEx(nShow=showCmd,
                                  fMask=shellcon.SEE_MASK_NOCLOSEPROCESS,
                                  lpVerb=lpVerb,
                                  lpFile=cmd,
                                  lpParameters=params)
     
        if wait:
            procHandle = procInfo['hProcess']    
            obj = win32event.WaitForSingleObject(procHandle, win32event.INFINITE)
            rc = win32process.GetExitCodeProcess(procHandle)
            #print "Process handle %s returned code %s" % (procHandle, rc)
        else:
            rc = None
     
        return rc
     
    def test():
        rc = 0
        if not isUserAdmin():
            print "You're not an admin.", os.getpid(), "params: ", sys.argv
            #rc = runAsAdmin(["c:\\Windows\\notepad.exe"])
            rc = runAsAdmin()
        else:
            print "You are an admin!", os.getpid(), "params: ", sys.argv
            rc = 0
        x = raw_input('Press Enter to exit.')
        return rc
     
     
    if __name__ == "__main__":
        sys.exit(test())
    Trouvé sur : http://stackoverflow.com/questions/1...ege-on-windows

Discussions similaires

  1. Problème de droits d'accès
    Par steph_p dans le forum Débuter
    Réponses: 4
    Dernier message: 06/02/2009, 18h16
  2. Réponses: 2
    Dernier message: 10/07/2008, 11h36
  3. ReportViewer problème de droit d'accès
    Par flogreg dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/04/2008, 15h13
  4. Problèmes de droits d'acces
    Par patator68 dans le forum Applets
    Réponses: 2
    Dernier message: 03/12/2007, 10h55
  5. Problème de droits d'accès
    Par hayaet dans le forum Langage
    Réponses: 1
    Dernier message: 29/06/2007, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo