Примечание: данный пост перепечатан в связи с закрытием бложиков на spaces.live.com, как имеющий какую-то ценность для автора и/или читателей.
Сегодня на форуме TechNet задали вопрос о том, как преобразовать числовое значение типа прав доступа к объекту в его текстовое значение (см. тут). В предыдущих постах, посвящённых управленю ACL из PowerShell я использовал этот приём, но не акцентировал на этом внимание. Поэтому я подумал, что пора поставить на этом вопросе жирную точку.
Итак, как я не раз писал ранее, для управления списком доступа к объектам (ACL) используются различные классы .NET, например:
Если у нас есть числовое значение права доступа (как у автора топика на форуме), то преобразовать его в текстовый вид очень просто:
[System.Security.AccessControl.FileSystemRights]1179817
где 1179817 - числовое значение, которое описывает тип доступа. В данном случае это число соответствует праву ReadAndExecute и Synchronize. Если ввести другое число, например 721343:
[vPodans] [System.Security.AccessControl.FileSystemRights]721343 Modify, TakeOwnership
то мы получим текстовое значение прав, а именно - Modify и TakeOwnership. Бывают случаи, когда не допускается указания прав в текстовом виде и требуется указание только в числовом виде. Обратное преобразование выполняется при помощи свойства Value__ :
[vPodans] [System.Security.AccessControl.FileSystemRights]721343 | gm TypeName: System.Security.AccessControl.FileSystemRights Name MemberType Definition ---- ---------- ---------- CompareTo Method System.Int32 CompareTo(Object target) Equals Method System.Boolean Equals(Object obj) GetHashCode Method System.Int32 GetHashCode() GetType Method System.Type GetType() GetTypeCode Method System.TypeCode GetTypeCode() ToString Method System.String ToString(), System.String ToString(String format, IFormatProvi.. value__ Property System.Int32 value__ {get;set;}
Это единственное свойство, которое хранится в данном объекте. Посмотрим, как это работает на практике:
[vPodans] ([System.Security.AccessControl.FileSystemRights]"FullControl").value__ 2032127
Вот так мы получили числовое значение права FullControl. По этой аналогии можно преобразовать типы доступа и к другим объектам, как реестр:
[vPodans] ([System.Security.AccessControl.RegistryRights]"FullControl").value__ 983103 [vPodans] [System.Security.AccessControl.RegistryRights]2 SetValue [vPodans]
Enjoy!
Comments: