* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Защита приложения
8 февраля 2009
Сейчас вы добавите к приложению код, необходимый для его защиты. Для проверки роли текущего пользователя вы примените императивную за- щиту, а для защиты доступа к принтеру — декларативную.
Как защитить приложение В Solution Explorer щелкните правой кнопкой Forml и выберите View Code - код формы Form] откроется в редакторе. Добавьте к конструктору формы Forml код, ограничивающий круг лии, имею- щих доступ к приложению, членами встроенной группы Windows Administrators: Visual Basic .NET AppDomain.CurrentDomain.SetPrincipalPolicy (System.Security.Principal.PrincipalPolicy.WindowsPrincipal) Dim myPerm As New System.Security.Permissions,Principal Permission(Nothing. "8UILTIN\Administrators") Try myPerm. DemandO Catch se As System.Security.SecurityException MessageBox.Show ("You do not have permission to run this program!") End End Try Visual C# AppOorr.ain.CurrentDomain.SetPriici pal Policy (System.Security.Principal.PrincipalPolicy.WindowsPrincipal); System. Security. Permissions. PrincipalPerrnission myPerm - new System.Security.Permissions.PrincipalPermission(null. "BUILTIN\\Administraters"); try myPerm. DemandO; catch(System.Security.SecurityException se) 3. Найдите метод btnPrint_Click и добавьте к нему следующий атрибут. Он необхо- дим, чтобы только доверенный код смог выводить данные на принтер: Visual Basic .NET Visual C# [System.Drawing.Printing.PrintingPermission (System. Security, Permissions. SecuntyAction. Demand, Level=System. Drawing.Printing.PrintingPermission Level,AlIP Dinting)] 4. Добавьте к методу btnPrint_Click обработку исключений, которые могут возник- нуть при попытке вывода на печать: Visual Basic .NET Try PrintOocumentl.Printf) Catch MessageBox.Show("You do not have permission to print!") End Try Visual C# . 5. Нажмите F5, чтобы протестировать приложение — оно должно работать нор- мально. Примечание Если вы не входите в группу Administrators, приложение работать не будет. В этом случае задайте роль, соответствующую встроенной группе Windows, членом которой вы являетесь. Если при попытке печати возникает исключение безопасности, настройте для сборки приложения соответствующую политику безопасности самостоятельно или попросить об этом системного ад- министратора. В строке, где создается объект Principal Permission, замените BUlLTIN\Admini$t~ rators на любую роль, которая не существует в Windows (например, на BU1LTlN\ Admimstratorss). Нажмите F4, чтобы скомпоновать и запустить приложение, Приложение отвергнет запрошенное вами разрешение и завершится неудачей. В программе на Visual Basic .NET приложение просто завершится, а программа на Visual C# генерирует необработанное исключение, которое генерируется по- вторно. Верните роли прежнее значение (BUILTIN\Administrators). В атрибуте разрешения PrintingPermission замените действие Demand на Deny. На- жмите F5, чтобы скомпоновать и запустить приложение. Попробуйте что-ни- будь напечатать. Программа отказывает в предоставлении запрошенного разрешения и уведом- ляет о этом пользователя. Верните исходное значение флагу действия защиты и перекомпилируйте приложение. В меню File выберите команду Save AIL чтобы сохранить свою работу.