背景
このコマンドがあるとしましょう
icacls C:\FullyAccessibleFolder /grant Users:(OI)(CI)F
これは英語バージョンのWindowsでは正常に機能しますが、フランス語バージョンでは機能しないようで、おそらくフランス語でUsers
が異なるために次のエラーが発生します。 Everyone
はWindowsではTout le monde
に変換されるため、これも解決策ではありません。
Users: Le mappage entre les noms de compte et les ID de sécurité n'a pas été effectué.
どのGoogleが翻訳するか
Users: The mapping between account names and security IDs was not performed.
質問
Windowsのさまざまな言語バージョンで機能するように、フォルダーとその内容すべてを再帰的に設定して、すべてのユーザーに完全なアクセス許可を与えるコマンドはありますか?
ウェブ全体のコンテンツ
このページ ほぼ同様の問題で、Everyone
がドイツ語でJeder
になり、フランス語でTout le monde
になる方法について説明しています。
Users
が異なるため、フランス語版では機能しません以下の3つのオプションがあります。
Language Portal を使用して、翻訳された名前を取得します。
Users
SIDからローカライズされた名前を取得します
Users
でicacls
SIDを使用する
sers を検索すると、次が返されます。
ローカライズされたマイクロソフト製品の翻訳
English Translation Product
Users Utilisateurs Windows 7
Users des utilisateurs Windows 7
Users Utilisateurs Windows 8 Modern Voice
Users Utilisateurs Windows 8
Users Utilisateurs Windows 8.1
USERS UTILISATEURS Windows 8.1
Users Utilisateurs Windows 10
Users des utilisateurs Windows 10
Users Utilisateurs Windows 10 Anniversary Update
users utilisateurs Windows 10 Anniversary Update
これは、次のコマンドが機能する可能性があることを示唆しています。
icacls C:\FullyAccessibleFolder /grant Utilisateurs:(OI)(CI)F
Users
SID(S-1-5-32-545
)SID:S-1-5-32-545
名前:ユーザー
説明:組み込みグループ。オペレーティングシステムの初期インストール後、唯一のメンバーはAuthenticated Usersグループです。コンピューターがドメインに参加すると、ドメインユーザーグループがコンピューターのユーザーグループに追加されます。
ソース Windowsオペレーティングシステムの既知のセキュリティ識別子
ローカライズされたUsers
グループ名を取得するには:
この単純なスクリプトは、「ユーザー」の実際の名前を提供します
(S-1-5-32-545)
特定のPC上のグループ:Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set objAccount = objWMIService.Get ("Win32_SID.SID='S-1-5-32-545'") Wscript.Echo objAccount.AccountName
それをvbs拡張子の付いたファイルに入れます(
usersName.vbs
)。今実行します:
echo Y|for /f "delims=" %i in ('cscript -Nologo usersName.vbs') do cacls foldername /G "%i":F
ソース Cacls、Windows 7、完全なアクセス許可、ローカル名wmz
Users
でicacls
SIDを使用する次のコマンドを使用します。
icacls C:\FullyAccessibleFolder /grant *S-1-5-32-545:(OI)(CI)F
Harry Johnston によるソースコメント
ADグループは、名前ではなくSID番号で指定する必要があります。
「EveryOne」、「ドメインユーザー」などの標準グループの場合、標準化されたSID番号があります。これは、MSDNページにあります 既知のセキュリティ識別子(SID) 。
以下は、最も一般的な相対識別子です。
SIDの構造は次のとおりです。
標準表記を使用してSIDをバイナリ形式から文字列形式に変換すると、SIDのコンポーネントを視覚化しやすくなります。
S-R-X-Y1-Y2-Yn-1-Yn
Component Definition S Indicates that the string is a SID R Revision level X Identifier authority value Y A series of subauthority values, where n is the number of values
たとえば、組み込みのAdministratorsグループのSIDは、標準化されたSID表記で次の文字列として表されます。
S-1-5-32-544
このSIDには4つのコンポーネントがあります。
改訂レベル(1)
識別子機関の値(5、NT機関)
ドメイン識別子(32、組み込み)
相対識別子(544、管理者)
PowerShellスクリプトは好きだが、SIDの番号を思い出せない場合:
$acl = Get-Acl .\myfolder
$sid = New-Object System.Security.Principal.SecurityIdentifier ([System.Security.Principal.WellKnownSidType]::BuiltinUsersSid, $null)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($sid, 'FullControl', 'ObjectInherit,ContainerInherit', 'None', 'Allow')
$acl.AddAccessRule($rule)
Set-Acl .\myfolder $acl
これは大量の入力のように見えますが、これらの長い識別子はタブ補完されています。
System.Security.Principal.SecurityIdentifier
securityi
からSystem.Security.Principal.WellKnownSidType
wellknownsi
からSystem.Security.AccessControl.FileSystemAccessRule
filesystem
からこれらの文字列はすべて.NET識別子であるため、ローカライズされません。
代わりにEveryone
SIDが必要な場合は、WorldSid
の代わりにBuiltinUsersSid
を使用してください。すべてのWellKnownSidType
オプションのリストを取得するには、 MSDNを参照 または次のコマンドを実行します。
[System.Security.Principal.WellKnownSidType].DeclaredFields | select Name