2016-10-19 1 views
0

Je voudrais savoir comment obtenir les droits possibles sur un dossier en utilisant cmd?Comment obtenir les rôles/droits ACL possibles sur un dossier utilisant CMD?

Je vais essayer d'expliquer plus mon besoin afin que vous comprendrez ma question:

J'utilise icacls changer ACL sur MyFolder.

J'utilise une commande comme celui-ci:

icacls "%ProgramFiles(x86)%\MyFolder" /grant:r Administrators:F 

ou

icacls "%ProgramFiles(x86)%\MyFolder" /grant:r Users:(OI)(CI)F /t /c 

Le problème est que si je lance que sur un ordinateur français, il me donne une erreur d'approbation quelque chose comme: " La relation d'approbation entre ce poste de travail et le domaine principal a échoué "....

Après avoir effectué quelques tests, j'ai compris que le problème est que j'utilise des administrateurs et je J'ai dû utiliser Administrateur (lors de l'exécution de mon script sur un Windows français). Même chose pour "Utilisateurs", je devrais utiliser "Utilisateurs" et non "Utilisateurs" dans ma commande pour que cela fonctionne. Ce dont j'ai besoin c'est de savoir s'il y a une variable utilisée par windows pour m'aider pour la localisation, pour obtenir automatiquement les rôles en utilisant cmd, pour remplacer "Administrators", "Users" par cette variable, pour que mon code fonctionne sur tout ordinateur Windows est tout c'est la langue ...

ce que je besoin est quelque chose comme:

icacls "%ProgramFiles(x86)%\MyFolder" /grant:r %Admin%:F 


icacls "%ProgramFiles(x86)%\MyFolder" /grant:r %Users%:F 

% de sorte que l'administrateur% sera automatiquement remplacé par les administrateurs sur un ordinateur anglais et par sur un ordinateur Administrateur français etc.

La syntaxe complète que j'utilise est en fait:

icacls "%ProgramFiles(x86)%\MYFOLDER" /grant:r Administrators:F /grant:r SYSTEM:F /grant Users:(OI)(CI)F /t /c 

Répondre

1

Vous pouvez utiliser le well known SID string constants

icacls "%ProgramFiles(x86)%\MyFolder" /grant:r *BA:F 

Si les noms sont nécessaires pour d'autres utilisations, vous pouvez demander à WMI pour le nécessaire information

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    for /f "tokens=2 delims==" %%a in (' 
     wmic path WIN32_UserAccount 
     where ( 
        LocalAccount^="True" 
        And SID Like "S-1-5-21-%%-500" 
       ^) 
     get Name /value 
    ') do for /f delims^=^ eol^= %%b in ("%%a") do set "adminName=%%b" 

    echo Local administrator account = [%adminName%] 


    for /f "tokens=2 delims==" %%a in (' 
     wmic path WIN32_Group 
     where (
        SID Like "S-1-5-32-544" 
       ^) 
     get  Name /value 
    ') do for /f delims^=^ eol^= %%b in ("%%a") do set "adminGroup=%%b" 

    echo Local administrators group = [%adminGroup%] 


    for /f "tokens=2 delims==" %%a in (' 
     wmic path WIN32_Group 
     where (
        SID Like "S-1-5-32-545" 
       ^) 
     get  Name /value 
    ') do for /f delims^=^ eol^= %%b in ("%%a") do set "usersGroup=%%b" 

    echo Local users group   = [%usersGroup%] 
+0

Merci d'essayer d'aider .... Toute autre façon d'obtenir par cmd la valeur Administrateur ou Administra teur et mettre dans une variable? votre réponse peut aider dans l'exemple icacls peut-être, mais elle ne répond pas totalement à ma question sur si je peux obtenir la valeur du rôle basé sur la localisation .... Avez-vous quelque chose d'égal à "BA" qui me permet de faire quelque chose comme: echo% BA% et obtenir "Administrateur" sur un ordinateur anglais, et "Administrateur" sur un ordinateur français? – JustGreat

+1

@ JustGreat, réponse mise à jour. –

+0

Merci beaucoup MC ND, je vais essayer les deux méthodes et vous faire connaître le résultat, j'ai aussi besoin d'un système s'il vous plaît ajoutez-le au script ci-dessus? cela peut m'aider et aider les autres qui liront un jour votre message. En passant, avez-vous reçu le SID? un lien Microsoft pour cela? ou c'est basé sur votre expérience? Pour faire des thinks Effacer ici est exactement la ligne que j'utilise, c'est pourquoi j'ai besoin d'admin, système et utilisateurs icacls "% ProgramFiles (x86)% \ MYFOLDER"/grant: r Administrateurs: F/grant: r SYSTEM : F/grant Utilisateurs: (OI) (CI) F/t/c merci encore MC ND – JustGreat