2016-10-19 5 views
0

私は、cmdを使用してフォルダの権利を取得する方法を知りたいですか?CMDを使用してフォルダのACLロール/権限を取得するにはどうすればよいですか?

私はあなたが私の質問を理解するように、より多くの私の必要性を説明しようとします:

私はMyFolderという上のACLを変更します。icaclsを使用しています。

私はこの1つのようなコマンドを使用しています:

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

または

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

問題は、私はフランスのコンピュータ上でそれを実行した場合、それは私のような何かを賛同エラーを与えているということです。 "このワークステーションとプライマリドメインとの間の信頼関係が失敗しました」....

いくつかのテストを行った後、問題は私が管理者と私Administrateurを使用する必要がありました(フランス語のWindowsでスクリプトを実行する場合)。

"Users"と同じことですが、私のコマンドでは "Utilisateurs"ではなく "Users"を使用して動作させるべきです。

私が必要とするのは、ローカライゼーションに役立つ変数があるかどうかを知ることです。cmdを使って自動的にロールを取得し、この変数で "Administrators"、 "Users"を置き換えて、自分のコードが動作するようにします任意のWindows上で、私は必要なもの

のようなものです...それは言語だが何であれ:ので、%アドミン%がフランスのコンピュータ上で英語のコンピュータ上とAdministrateurにより、管理者によって自動的に置き換えられます

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


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

等々。私が実際に使用しています

完全な構文は次のとおりです。名前は他の用途のために必要とされる場合

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

答えて

1

あなたは、あなたが必要なため、WMIを求めることができ、well known SID string constants

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

を使用することができます情報

@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を取得するには、AdministratorまたはAdministra teurと変数に入れて?あなたの答えはおそらくicaclsの例で役立つかもしれませんが、私はローカリゼーションに基づいて役割の価値を得ることができるかどうかについて完全に私の質問に答えることはできません.... あなたは "BA"エコー%BA%を取得し、英語のコンピュータでは "Administrator"、フランス語では "Administrateur"を取得しますか? – JustGreat

+1

@JustGreat、回答が更新されました。 –

+0

ありがとうMC ND、私は両方の方法を試して結果を知ってもらいます、私もシステムの必要性がありますあなたは上記のスクリプトにそれを追加しますか?それは私を助け、あなたのポストをある日読む人を助けるかもしれません。ところで、あなたはSIDを手に入れましたか? それのための任意のマイクロソフトのリンク?それはあなたの経験に基づいていますか? シンプルにするには私が使用している行が正確です。そのため、管理者、システム、ユーザーが必要です。 icacls "%ProgramFiles(x86)%\ MYFOLDER"/grant:r管理者:F/grant:r SYSTEM :F/grantユーザー:(OI)(CI)F/t/c もう一度MC ND – JustGreat

関連する問題