2016-10-19 3 views
0

Я хотел бы знать, как получить возможные права на папку с помощью cmd?Как получить возможные роли/права ACL в папке с помощью CMD?

Я попытаюсь объяснить больше мою потребность так, чтобы вы поняли мой вопрос:

Я использую Icacls изменить ACL на MyFolder.

Я использую команду, как это:

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

или

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

Проблема заключается в том, что если я бегу, что на французском компьютере это дает мне что-то ошибки апробация вроде: " Не удалось установить доверительные отношения между этой рабочей станцией и основным доменом »....

После выполнения некоторых тестов я понял, что проблема в том, что я использую Administrator s и мне пришлось использовать Administrateur (при запуске моего скрипта на французской Windows).

То же самое для «Пользователей», я должен использовать «Utilisateurs», а не «Пользователи» в моей команде, чтобы он работал.

Мне нужно знать, есть ли переменная, используемая Windows, чтобы помочь мне в локализации, автоматически получать роли с помощью cmd, чтобы заменить «Администраторы», «Пользователи» этой переменной, чтобы мой код работал на любой Windows, все, что это язык ...

что мне нужно что-то вроде:

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


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

так что% Администратор% будет заменен автоматически Администраторов на английский компьютер и Administrateur на французском компьютере и так далее.

Полный синтаксис, который я использую на самом деле:

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

ответ

1

Вы можете использовать well known SID string constants

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

Если имена требуются для других целей, то вы можете запросить WMI для требуемого информация

@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

Благодарим за попытку помочь .... Любой другой способ получить по cmd значение Администратор или A dministrateur и вставить переменную? ваш ответ может помочь, например, в примере icacls, но он полностью не отвечает на мой вопрос о том, могу ли я получить значение роли, основанной на локализации .... У вас есть что-то равное «BA», которое позволяет мне делать что-то вроде: echo% BA% и получить «Администратор» на английском компьютере и «Администратор» на французском компьютере? – JustGreat

+1

@JustGreat, ответ обновлен. –

+0

Спасибо большое MC ND, я попробую оба метода и дам вам знать результат, у меня также есть потребность в системе, пожалуйста, добавьте его в скрипт выше? это может помочь мне и помочь другим, кто прочитает в один прекрасный день ваш пост. Кстати, были ли у вас SID? любая ссылка для Microsoft? или это основано на вашем опыте? Чтобы сделать thinkgs Очистить здесь именно та строка, которую я использую, поэтому мне нужен админ, система и пользователи icacls "% ProgramFiles (x86)% \ MYFOLDER"/grant: r Администраторы: F/grant: r SYSTEM : F/grant Пользователи: (OI) (CI) F/t/c еще раз спасибо MC ND – JustGreat