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

VBScript Discussion :

Vbscript pour modifier des Droits NTFS d'un Dossier et de son contenu


Sujet :

VBScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Vbscript pour modifier des Droits NTFS d'un Dossier et de son contenu
    Bonjour,

    Je vous écris car je suis à la recherche d'un script vbs me permettant de modifier les droits de certain dossiers.
    En effet je fais beaucoup de prises en main à distance et il m'est souvent nécessaire d'attribuer des droits.

    J’ai trouvé par hasard ce script de Hackoofr:
    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
     
    'Vbscript pour modifier des Droits NTFS d'un Dossier et de son contenu (sous-dossiers et Fichiers)
    '© Hackoo 25/03/2012
    Dim oFSO,oFld 
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Dossier = "c:\Essai"
    If Not oFSO.FolderExists(Dossier) Then
    'Crée le repertoire
    Set oFld=oFSO.CreateFolder(Dossier)
    end if
     
    If oFSO.FolderExists(Dossier) Then
    For each Fichier in oFSO.GetFolder(Dossier).Files
    'MsgBox "Fichier :" & Fichier.path,64,"Nom des Fichiers"
    LectureSeule(Fichier) 'chaque fichier devient en lecture seule 
    Next
    End if
     
    If oFSO.FolderExists(Dossier) Then
    For each Folder in oFSO.GetFolder(Dossier).SubFolders
    'MsgBox "Dossier :" & Folder.Path,64,"Nom des Dossiers"
    LectureSeule(Dossier) 'chaque dossier devient en lecture seule
    Next
    End If
     
    ControlTotale(Dossier) ' Pour rendre un controle Totale du dossier parent
     
    Function LectureSeule(objet)
    Set Ws = CreateObject("WScript.Shell")
    Set ProcessEnv = Ws.Environment("Process")
    NomUtilisateur = ProcessEnv("USERNAME")
    Command = "%COMSPEC% /c Echo o| cacls "& objet &" /g " & qq(NomUtilisateur) & ":r administrateurs:r"
    Result = ws.Run(Command,0,True) 'exécution de la commande sans afficher la console MS-DOS
    End Function
     
    Function ControlTotale(objet)
    Set Ws = CreateObject("WScript.Shell")
    Set ProcessEnv = Ws.Environment("Process")
    NomUtilisateur = ProcessEnv("USERNAME")
    Command = "%COMSPEC% /c Echo o| cacls "& objet &" /g " & qq(NomUtilisateur) & ":f administrateurs:f"
    Result = ws.Run(Command,0,True) 'exécution de la commande sans afficher la console MS-DOS
    End Function
     
    Function qq(strIn)
    qq = Chr(34) & strIn & Chr(34)
    End Function
    Ce script correspond exactement à ce que je voulais faire (sans savoir comment =).
    Je rencontre néanmoins des difficultés (très faibles connaissances en programmation).

    Je souhaiterai savoir s’il est possible de changer « administrateurs » en « tout le monde » ou « everyone », j’ai essayé mais cela ne fonctionne pas. J’ai uniquement réussi en mettant « utilisateurs ».

    J’ai rencontré une autre difficulté. Si le chemin du dossier est dans « program files » ou « windows », le script ne fonctionne pas. Comme ci je n’avais pas le droit de modifier le contenu de ces dossiers.
    Y a-t-il une spécificité pour ces chemins?

    Le script permet de mettre l’utilisateur actuel et le groupe administrateurs en contrôle total du dossier. Est-il possible de rajouter d’autres groupes ?
    L’idéal pour moi serait : l’utilisateur actuel + Tout le monde + utilisateurs + administrateurs en contrôle total.

    Merci d’avance pour tout élément que vous pourrez m’apporter.

    Cordialement
    Thomas

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Ce script est basé sur la commande Cacls
    Un petit help sur cette commande il suffit de taper Cacls /?
    CACLS non documenté : Capacités des autorisations de groupe

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour votre réponse et pour les liens sur la fonction calc.
    Malheureusement, ça ne m’a pas aidé à résoudre mon problème.

    En effet, après tests, il m’est toujours impossible d’utiliser le script dans un dossier dans un dossier système tel que (C:\Windows\test ou C:\Program Files\test].

    Pour corriger ce problème, je pense qu’il faudrait exécuter le script en tant qu’administrateur.
    Cette fonction n’est pas disponible en faisant un clic droit sur un vbs.
    J’ai donc pensé à transformer le .vbs en .exe pour pouvoir le lancer en administrateur, il faut que je fasse des recherches là-dessus.

    Apparemment, il y a une mécanique particulière à utiliser car sur Windows, « administrateur » et « système » n’ont plus le contrôle total des dossiers système (Windows, programmes, utilisateurs). Connaissez-vous une astuce pour se rendre propriétaire de ces dossiers système afin de pouvoir y modifier les droits?

    Egalement, je ne parviens toujours pas à choisir comme groupe « tout le monde » ou « everyone ».


    Je vais continuer mes recherches et je vous tiens au courant.

    Thomas

  4. #4
    Nouveau membre du Club
    Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2012
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	NomUtilisateur = ProcessEnv("USERNAME")
    	Command = "%COMSPEC% /c Echo o| cacls "& objet &" /g " & qq(NomUtilisateur) & ":f administrateurs:f"
    En modifiant les lignes NomUtilisateur = "everyone" ?

    Le "administrateurs" m'étonne : d'après la documentation de CACLS ( /G util:perm Donne à l'utilisateur spécifié les droits d'accès. _ Perm peut être*: R Lecture _ W Écriture _ C Modification (en écriture) _ F Contrôle total), la ligne de commande copiée donne le contrôle total à "%USERNAME%" (la personne exécutant la ligne de commande) et "administrateurs" (le groupe d'utilisateurs).

    Essaie avec ceci ? (Pour garantir le contrôle total à tout le monde dans la fonction ControlTotale().)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	NomUtilisateur = "tout le monde"
    	Command = "%COMSPEC% /c Echo o| cacls "& objet &" /g " & qq(NomUtilisateur) & ":f"
    Nota : j'avoue ne pas savoir à quoi correspond le qq().

    Édition pour le problème du Program Files : Depuis Windows Vista (en fait, depuis l'UAC), le Program Files est émulé pour les utilisateurs, il se trouve "réellement" dans un dossier type "C:\Users\NOM\AppData\Local\.virtualstore", pour éviter les modifications indésirées du système (idem avec les dossiers système comme "C:\Windows"). Pour éviter des soucis, je t'invite à utiliser un autre dossier que ceux présent par défaut dans l'ordinateur pour l'exécution et l'installation de programmes. Ou à désactiver l'UAC, mais ce serait regrettable.
    Pour lancer un script en mode administrateur, il faut lancer la commande "runas /u:[DOMAINE\ADMINISTRATEUR] cmd", et placer le VBS dans la fenêtre (son nom va se mettre en bout de ligne de texte) pour l'exécuter en mode admin.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Effectivement, l'emulation des dossiers système par l'UAC explique le problème d'accès.
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NomUtilisateur = "tout le monde"
    Command = "%COMSPEC% /c Echo o| cacls "& objet &" /g " & qq(NomUtilisateur) & ":f"
    Malheuresement, cela n'a pas fonctionné.
    Apparement, "tout le monde" n'est pas prit en compte.
    L'autre solution serait de mettre les droits à utilisateurs + adminsitrateurs pour avoir un équivalent de "tout le monde", mais je n'ai pas réussi non plus.

    Je continue les recherches =)

    Petite question:
    Du fait que les fichiers système soient émulés, est il possible d'attibuer les droits en passant pas un autre chemin? Exemple: C:\Users\NOM\AppData\Local\.virtualstore
    Je n'y crois pas trop, mais on sait jamais

    Edit: J'ai remplacé "tout le monde" par "everyone", même résultat.

  6. #6
    Nouveau membre du Club
    Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2012
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Choco-Boy Voir le message
    Petite question:
    Du fait que les fichiers système soient émulés, est il possible d'attibuer les droits en passant pas un autre chemin? Exemple: C:\Users\NOM\AppData\Local\.virtualstore
    Je n'y crois pas trop, mais on sait jamais
    Si tu lances le script en mode administrateur de l'ordinateur, il n'y a plus d'UAC effective, les modifications sur (dont les droits d'accès au) le dossier Program Files ne sont plus émulés.

    Sinon, tu pourrais vérifier quelque-chose comme NomUtilisateur=ProcessEnv("COMPUTERNAME")&"\Tout le monde" ?

Discussions similaires

  1. Modifié des Droit NTFS en vbs
    Par inco69 dans le forum VBScript
    Réponses: 2
    Dernier message: 03/08/2010, 09h52
  2. Réponses: 1
    Dernier message: 09/02/2007, 22h51
  3. [MySQL] Erreur pour modifier des champs
    Par kevinf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h47
  4. Editeur pour modifier des ressource
    Par soumia dans le forum Delphi
    Réponses: 14
    Dernier message: 08/08/2006, 16h49
  5. Réponses: 24
    Dernier message: 07/12/2005, 10h37

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