Додатки з підвищеною довірливістю - це спеціальний тип додатків, що виконуються поза браузера. Від звичайних вони відрізняються тим, що мають вражаючий набір додаткових привілеїв. Ці привілеї не збігаються з дозволами традиційних настільних додатків, але вони роблять можливим ряд потенційно небезпечних дій, наприклад активізацію сторонніх програм і безпосередній доступ до файлової системи.
З цієї причини додатки з підвищеною довірливістю рекомендується використовувати тільки в жорстко контрольованому середовищі, такий як корпоративна мережа, в якій користувачі добре знають свої додатки і довіряють розробникам.
У багатьох випадках користувачі дуже неохоче надають додаткові привілеї, необхідні додатків з підвищеною довірливістю. Іноді вони взагалі відмовляються встановлювати їх. До того ж системний адміністратор може налаштувати комп'ютери таким чином, щоб запобігти установку або виконання додатків поза браузера, що вимагають підвищеної довірливості.
Перш ніж приступити до розробки програми Silverlight з підвищеною довірливістю, проаналізуйте, чи не підійде для вирішення даного завдання повнофункціональний настільний додаток WPF. Платформа WPF повністю підтримує інфраструктуру .NET Framework. Як і в Silverlight, додатки WPF можна встановлювати з Інтернету, але, на відміну від Silverlight, додатки WPF працюють тільки в додатках Windows.
Щоб встановити програму з підвищеною довірливістю
Щоб вказати, що програма має вимагати підвищеної довірливості, відкрийте вікно Out-of-Browser Settings і встановіть прапорець Require elevated trust (Вимагає підвищеної довірливості):
Для запуску процесу установки відкрийте контекстне меню Silverlight або викличте метод Application.Install (). На екрані з'явиться вікно з повідомленням системи безпеки. Клацніть на кнопці Встановити.
Можете підписати додаток цифровим сертифікатом X.509. Тоді у вікні системи безпеки попередження буде менш грізним, знак оклику буде замінений питальним і буде відображено ім'я видавця.
Можливості додатків з підвищеною довірливістю
Що може додаток з підвищеною довірливістю робити таке, що не по силам звичайному додатком Silverlight? Давайте розглянемо докладніше:
Необмежена підтримка повноекранного режиму. При перемиканні додатка з підвищеною довірливістю в повноекранний режим сповіщення "Натисніть Esc для виходу з повноекранного режиму» не з'являється. натискання клавіші
Немає обмежень кроссдоменного доступу. Додатком з підвищеною довірливістю дозволено завантажувати вміст з будь-якого веб-сайту, викликати веб-служби на будь-якому сайті, відкривати сокетних з'єднання з будь-яким сервером, тобто виконувати всі операції, доступні для настільних додатків.
Менше операцій, на які необхідний дозвіл користувача. Існує багато ситуацій, в яких звичайна програма Silverlight змушене запитувати дозвіл у користувача, наприклад, для доступу до буфера обміну, збереження файлу в ізольованому сховищі, конфігурації повноекранного режиму при втраті фокуса і т.п.
Налаштування вікна. Якщо вам не подобаються стандартна рамка і елементи управління вікном, що надаються операційною системою, видаліть їх з програми з підвищеною довірливістю і намалюйте власні за допомогою стандартних елементів Silverlight.
Дочірні вікна. Додаток з підвищеною довірливістю може в будь-який момент створювати дочірні вікна.
Межзадачного взаємодія з компонентами СОМ. У додатку з підвищеною довірливістю можна використовувати бібліотеки функцій, що надаються операційною системою Windows за допомогою СОМ. Наприклад, можна взаємодіяти з додатками Outlook і Office, а також з вбудованими компонентами Windows, такими як Script Host і WMI.
Виклики P / Invoke. Додаток з підвищеною довірливістю може виконувати коди системних бібліотек DLL на комп'ютерах Windows і звертатися до функцій Windows API за допомогою платформних викликів Р / Invoke.
Перш ніж скористатися будь-яким з цих коштів, не забудьте привласнити властивості Application.HasElevatedPermissions значення true. В іншому випадку додаток буде працювати в звичайному режимі низької довіри.
Налаштування вікна
Звичайна програма, що виконується поза браузера, відображає стандартний фрейм вікна, що надається операційною системою. Він оснащений добре знайомими всім кнопками згортання, розгортання і закриття вікна. Колір, стиль, затінення і прозорість рамки контролюються операційною системою. Така модель цілком підходить для більшості випадків, однак, якщо хочете щоб ваше додаток виглядало стильно і професійно, можете налаштувати зовнішній вигляд фрейма вікна і оснастити його кнопками, створеними вручну.
Налаштування фрейма вікна виконується в два етапи. Перший - повне видалення стандартного фрейму. Для цього в провіднику рішень двічі клацніть на вузлі Properties (Властивості). Відкрийте вкладку Silverlight і клацніть на кнопці Out-of-Browser Settings (Параметри додатків поза браузера). Виберіть один з пунктів списку Window Style (Стиль вікна).
Якщо вибрати значення Default, відобразиться стандартний фрейм вікна. При виборі другого значення, No Border, буде видалений стандартний фрейм вікна і залишений стандартний плаваючий прямокутник з вмістом призначеного для користувача елементу управління. При значенні Borderless Round Corners буде видалений стандартний фрейм вікна і заокруглені кути вікна програми. Різниця між другим і третім варіантами чисто "косметична", в будь-якому з цих випадків стандартний фрейм вікна видаляється. На малюнку нижче показаний приклад:
Другий етап настройки фрейма вікна - промальовування нового фрейму і додавання базових елементів управління для закриття, зміни розмірів, зміни стану і перетягування вікна. Для забезпечення платформ, Silverlight не дозволяє програмісту модифікувати стандартний фрейм вікна операційної системи. Він повинен самостійно намалювати фрейм вікна за допомогою відповідних малюнків або елементів управління Silverlight.
Наприклад, можна помістити основний вміст в одноячеечний контейнер Grid і накласти на нього інший елемент Silverlight (Rectangle або Image). Можна також зробити висновок в оболонку Border кореневої призначений для користувача елемент управління наступним чином:
В даному прикладі в параметрах проекту встановлено значення Borderless Round Corners. Зовнішнє поле (Margin) шириною 1 піксель справа і знизу забезпечує висновок фрейма в правильній позиції. Значення CornerRadius, рівне 2, вирівнює кут з областю вікна:
Платформа Silverlight не підтримує завдання довільної фігури в якості рамки вікна. Тому в якості фрейма, що визначає головне вікно, можна застосувати тільки прямокутник або округлений прямокутник. Важливим є те, що Silverlight надає вам цей прямокутник, і вам залишається лише заповнити його вмістом. Крім того, в Silverlight не можна створити прозору або частково абсолютна прозорість, яка дозволила б бачити вміст екрану крізь вікно програми.
Звичайно, додавання рамки Border покращує зовнішній вигляд вікна, але залишається одна важлива проблема. Без фрейма, наданого операційною системою, користувач не може змінити розміри вікна, перемістити його, згорнути, розгорнути або закрити. Якщо потрібно, щоб користувач мав можливість виконувати ці операції, потрібно запрограмувати їх в коді вигляд стартового вікна. На щастя, кошти, вбудовані в клас Window, істотно полегшують це завдання.
Перший етап - створення рядка заголовка вікна. Рядок заголовка грає три ролі: містить текст заголовка, служить місцем, вчепившись за яке користувач може перетягувати вікно, і, нарешті, містить кнопки згортання, розгортання і закриття вікна. У наведеному нижче прикладі розмітка створює базову рядок заголовка. Фігури кнопок згортання, розгортання і закриття промальовувалися за допомогою елементів Path і Rectangle.
Другий етап - додавання способу зміни розмірів вікна шляхом перетягування його країв. Найлегше реалізувати його, уклавши все вікно в оболонку контейнера Grid, в якому використовується невидимий елемент Rectangle. Вам знадобляться вісім елементів Rectangle: по одному на кожну сторону і на кожен кут:
Нижче демонструється розмітка і код вікна з додаванням цих коштів: