Роли .NET в Windows
Чтобы внести изменения в существующей группе, выделите ее, щелкните на ней правой кнопкой мыши и выберите команду Properties (Свойства). Щелкнув на кнопке Add (Добавить), вы получите диалоговое окно со всеми пользователями системы. Теперь можно выбирать нужных пользователей и добавлять их в группу. На рис. 13.3 показано добавление пользователя в группу HotelAdmin. Обратите внимание, что JaneAdmm и РеterT– это ранее созданные и настроенные учетные записи пользователей. Удаление пользователей из группы выполняется с помощью кнопки Remove (Удалить).
В программе имя роли надо указывать, используя имя домена или машины. На моей машине роль CustomerAdmm обозначается как "HPDESKTOP\\CustomerAdmm", а роль HotelAdnun – как "HPDESKTOP\\HotelAdmin". Для заранее установленных групп используется префикс "BUILTIN" ("ВСТРОЕННЫЙ"), например, встроенная группа Administrators (Администраторы) обозначается как "BUILTIN\\Admmistrators" ("ВСТРОЕННЫЕ\\Администраторы"). Чтобы избежать проблем, связанных с переводом и интернационализацией, для обращения к встроенным ролям используется перечисление System::Security::Principal::WindowsBuiltlnRole (Система. Защита::Принципал::WindowsBuiltInRole). Вместо того, чтобы использовать строку "BUILTIN\\Administrators" ("ВСТРОЕННЫЕ\\Администраторы"), группу Administrators (Администраторы) можно обозначать как WindowsBuiltlnRole::Administrator (Wmdows – Администратор).
Рис. 13.3. Добавление в группу пользователя JaneAdmin Уже добавлен пользователь PeterT
Пример RoleBasedSecurity, который мы рассматривали в предыдущем разделе, на этот раз проверяет, имеет ли текущий пользователь несколько ролей. Вы можете передавать роль в виде строки или использовать перечисление WindowsBuiltlnRole. Помните, что необходимо изменить программу, чтобы использовать фактическое имя вашей машины, когда вы выполняете пример на вашем компьютере. Для выбора ветвей кода, соответствующих членству в этих ролях, в программе используется оператор условного перехода if-else.
// использовать роль, чтобы выбрать ветвь кода String *adminRole = "HPDESKTOP\\CustomerAdmin"; // Строка if(wp › Is!nRole(adminRole)) { Console.:WriteLine( "In Customer Administrator role."); // "В роли Администратора." // выбрать ветвь кода для CustomerAdmin… } else { Console::WriteLine( "Not in Customer Administrator role."); // "He в роли Администратора." // не выбирать ветвь кода для CustomerAdmin… } // использование встроенных ролей для выбора ветви кода if(wp › Is!nRole(WindowsBuiltlnRole::Administrator)) // если Администратор { Console::WriteLine( "In Administrator role"); // "В роли Администратора" // выбрать ветвь кода для Администратора… } else { Console::WriteLine( "Not in Administrator role."); // "He в роли Администратора." // не выбирать ветвь кода для Администратора… } if(wp › Is!nRole(WindowsBuiltlnRole::Guest)) // если Гость { Console::WriteLine("In Guest role"); // "В роли Гостя" // выбрать ветвь кода для Гостя… } else { Console::WriteLine( "Not in Guest role."); // "He в роли Гостя." //не выбирать ветвь кода для Гостя… } if(wp › Is!nRole(WindowsBuiltlnRole::User)) // если Пользователь { Console::WriteLine( "In User role"); // "В роли Пользователя" // выбрать ветвь кода для Пользователя… } else { Console::WriteLine ( "Not in User role"); // "He в роли Пользователя" // не выбирать ветвь кода для Пользователя… }