Як полагодити програму, зламану системою UAC
Отже, одну з ваших програм неможливо встановити в Windows 7, або вона не зберігає налаштування, або просто не запускається. Причина цього лежить, ймовірно, в тому, що UAC забороняє додатком (або утиліті установки) робити те, що вона повинна робити. І так як програма про існування UAC не підозрює, вона не запитує адміністративні привілеї, отже, Windows не знає, що настав час для запиту UAC. І що в результаті? Windows 7 забороняє зміни і ні слова про це не говорить, а програма не працює.
Для того щоб впоратися з цим, можна «підняти» програму до рівня адміністратора вручну. Це неможливо зробити під час виконання програми, але, як показано на рис. 7.13, додаток можна запустити з правами адміністратора. Клацніть правою кнопкою миші на ехе-файлі програми або на її значку на Робочому столі або в меню Пуск і в контекстному меню виберіть пункт Запуск із правами адміністратора (Run as administrator).
Відкриється запит UAC; якщо ви клацнете Продовжити (Continue), Windows підвищить рівень додатки, і воно запрацює. Кілька зауважень про запуск програм з командного рядка ви знайдете в урізанні «Командний рядок від імені адміністратора» на с. 466.
Якщо в контекстному меню немає команди Запуск від імені адміністратора (Run as #%, administrator), це означає, що ви клацнули нема на значку виконуваної програм-f g * ми і не на ярлику Windows. В такому випадку відкрийте Провідник, перейдіть до * 'теки програми (зазвичай вона розташована в папці C: \ Program Fries) і клацніть правою кнопкою миші на головному ехе-файлі.
Цей трюк працює і для утиліт установки програм, однак пам'ятайте: якщо «підвищення вручну» потрібно для утиліти установки, швидше за все, воно буде потрібно і для самої програми. Перш ніж починати установку, зайдіть на сайт творця програми і перевірте, чи немає там поновлення або нової версії, сумісної з Windows 7.
Якщо скрипт буде працювати тільки від імені адміністратора, то зручно налаштувати для неї постійне використання розширених прав. Клацніть на значку (або ехе-файлі) програми правою кнопкою миші, виберіть у контекстному меню пункт Властивості (Properties) і перейдіть на вкладку Сумісність (Compatibility). В полі
Рівень прав (Privilege Level) встановіть прапорець Виконувати цю програму від імені адміністратора (Run this program as an administrator), після чого натисніть ОК.
Якщо натиснути правою кнопкою миші на документі, то ни не побачите в контекстному меню пункту Запуск від імені адміністратора (Run as administrator). Однак якщо перейти на вкладку Сумісність (Compatibility), як розказано вище, то можна налаштувати запуск відповідного додатку в режимі адміністратора.
КОМАНДНА СТРОКА ВІД ІМЕНІ АДМИНИСТРАТОРА
Коли мова йде про управління обліковими записами користувачів, Командний рядок - це особливий випадок. Ця програма, cmd.exe, хоча і розроблено спеціально для Windows 7, не вміє автоматично підвищувати свої повноваження до рівня адміністратора, як роблять інші компоненти Windows.
Наприклад, якщо відкрити Командний рядок через меню Пуск або виконавши команду cmd. ехе, а потім спробувати запустити netsh, sc або будь-яку іншу з безлічі команд, які згадуються в цій книзі, то UAC заблокуємо т її. Для того щоб обійти перешкоду, потрібно закрити Командний рядок, а потім знову відкрити від імені адміністратора.
Маса зайвих рухів. Але, на жаль, якщо відкрити властивості файлу cmd.exe і перейти на вкладку Сумісність (Compatibility) то ви побачите таке повідомлення:
Режим сумісності не може бути встановлений для даної програми, оскільки вона є частиною даної версії системи Windows (Compatibility modes can not be set on this program because it is part of this version of Windows).
Як це зазвичай буває в продуктах Microsoft, якийсь збочений сенс це твердження має, але користі від нього ніякої. Для того щоб обійти проблему, просто скопіюйте файл cmd.exe (він знаходиться в папці \ Windows \ System32) в будь-яку іншу папку. Після цього клацніть правою кнопкою миші на копії cmd.exe, перейдіть на вкладку Сумісність (Compatibility) і встановіть прапорець Виконувати цю програму від імені адміністратора (Run this program as an administrator).
Найпростіший спосіб відключити UAC - відкрити на панелі керування сторінку Облікові записи користувачів (User Accounts), клацнути на засланні Зміна параметрів контролю облікових записів (Change User Account Control settings) і у вікні, перетягнути повзунок вниз, до пункту Ніколи не повідомляти (Never notify ).
1 Назва параметра може ввести в оману. Словосполучення «ніколи J мс повідомляти * передбачає, що вас більше ніколи не будуть турбувати з-спілкування виду« Windows необхідно ваше дозвіл для продовження ». Це дійсно так, але при цьому ніде не говориться, що програми, які раніше виконувалися з обмеженими користувацькими правами, тепер будуть виконуватися в повному адміністративному режимі. На цій сторінці немає параметра, який дозволив би при включеному UAC непомітно пригнічувати програми, які намагаються внести зміни в конфігурацію комп'ютера. Однак можна вибрати другий знизу параметр, Повідомляти тільки при спробах програм внести зміни в комп'ютер (не затемняється Робочий стіл) (Notify me only when programs try to make changes to my computer). В цьому випадку Робочий стіл не затемнюється, навіть коли иа екран виводиться повідомлення UAC.
Розгорніть гілку Локальні політики (Local Policies) і виберіть папку Параметри безпеки (Security Options). У правій панелі двічі клацніть на параметрі Контроль облікових записів: поведінка запиту на підвищення прав для адміністратора в режимі адміністративного (User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode). У вікні, ви побачите список з шести пунктів:
Про Підвищення без запиту (Elevate without prompting)
Це кращий варіант, якщо потрібно повністю придушити висновок повідомлень UAC, в той же час не відключаючи саму систему UAC. Додатки, які не підозрюють про існування UAC, що не будуть брати участь у підвищення. Таким чином, Windows 7 продовжить придушувати будь-які небезпечні зміни.
Для користувачів ноші Premium: надайте параметру ConsentPromptBehavior-Admin значення 0.
Про Запит облікових даних (Prompt for credentials)
Цей параметр посилює режим безпеки на комп'ютері: в кожному повідомлення UAC також запитується пароль. Поки пароль не введений, клацнути на кнопці Продовжити (Continue) неможливо.
Для користувачів Home Premium: надайте параметру ConsentPromptBehavior-Admin значення 3.
Якщо ви адміністратор і налаштовуєте комп'ютер для іншого користувача, то створіть для цього користувача стандартний обліковий запис. Потім в редакто-ре Локальна політика безпеки (Local Security Policy) виберіть для параметра Контроль облікових записів: поведінка запиту на підвищення прав для адміністратора в режимі адміністративного (User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode) значення Запит облікових даних (Prompt for credentials).
Про Запит згоди (Prompt for consent)
Запит UAC відображається кожного разу, коли програма запитує адміністративні права, і, щоб схвалити дію, вам потрібно клацнути або Продовжити (Continue), або, в деяких випадках, Дозволити (Permit).
Для користувачів Home Premium: надайте параметру ConsentPromptBehavior-Admin значення 4.
Про Запит облікових даних / згоди на безпечному робочому столі (Prompt for credentials / consent on the secure desktop)
To ж саме, що Запит облікових даних (Prompt for credentials) і Запит згоди (Prompt for consent) відповідно, але з затемненням Робочого столу.
Для користувачів Home Premium: надайте параметру ConsentPromptBehavior-Admin значення 1 для облікових даних або 2 для згоди.
Про Запит згоди для двійкових даних не з Windows (Prompt for consent for non-Windows binaries)
У Windows 7 е го вибір за замовчуванням. Те ж саме, що Запит згоди (Prompt for consent), але тільки для програм, які не входять до складу Windows. Приклад програми, що входить до складу Windows, наводиться в урізанні «Командний рядок від імені адміністратора» на с. 466.
Для користувачів Home Premium: надайте параметру ConsentPromptBehavior-Admin значення 5.
Віртуалізація Фото І РЕЄСТРУ
Як розповідалося в розділі «Управління UAC», призначення UAC в Windows 7 - запобігати модифікацію папок операційної системи, таких як Program Rles, а також захищених областей реєстру. Якщо при розробці програми не враховувалися вимоги UAC, то вона не запитує підвищення до адміністраторського рівня і для неї спроба створити, наприклад, власну папку в папці Program Rles завершується невдачею. Розробники Microsoft придумали рішення, що спрощує життя подібним старим програмам.
Це рішення називається виртуализацией. Система віртуалізації перенаправляє старі додатки в особливі захищені області жорсткого диска і реєстру. Таким чином, якщо програма, оснащена функцією автоматичного оновлення, спробує записати файл C: \ Program Rles \ Acme Update \ newversion.dll, то Windows направить її в іншу папку: C: \ Users \
Аналогічно, якщо програма спробує змінити в реєстрі ключ HKEY_L0CAL_ MACHINE \ Software \ Acme, то система перенаправить її в ключ HKEY_CURRENT_USER \ Software \ Classes \ VirtualStore \ MACHINE \ Software \ Acme.
За замовчуванням захищаються папки Program Rles і Windows, а також більшість підпапок в них і майже всі ключі в галузі реєстру HKEY_LOCAL_MACHINE \ Software. UAC не захищає власну папку користувача З: \ К5ег5 \\ і не блокує зміни в галузі реєстру HKEY_CURRENTJJSER \ Software.
Для того щоб побачити, які з працюючих програм використовують віртуалізацію, клацніть правою кнопкою миші на порожній області в панелі завдань і виберіть в меню пункт Запустити диспетчер задач (Task Manager). Перейдіть на вкладку Процеси (Processes) і в меню Вид (View) клацніть на команді Вибрати стовпці (Select Columns). Увімкніть відображення стовпця Віртуалізація контролю облікових записів (User Account Control (UAC) Virtualization) і натисніть ОК. Тепер ви бачите, що в списку процесів для деяких програм - особливо старих - віртуалізація включена (наприклад, для explorer.exe і iexplore.exe, так як від цих процесів багато в чому залежить безпека системи). Для програм з підтримкою UAC віртуалізація вимкнена, а для програм, що виконуються з правами адміністратора, відображається значення Чи не дозволено (Not Allowed).
Як ви помітили, в вікні Локальна політика безпеки (Local Security Policy) є але щонайменше ще дев'ять параметрів, що відносяться до UAC. Більшість інтуїтивно зрозумілі, але кілька заслуговують на особливу увагу.
Windows 7 за умовчанням підвищує утиліти установки програмного забезпечення до рівня адміністратора. З урахуванням можливого зараження зловмисними програмами це небезпечно. Для того щоб зробити комп'ютер трохи безпечнішим, виберіть для параметра Контроль облікових записів: виявлення установки додатків і запит на підвищення прав (User Account Control: Detect application installations and prompt for elevation) значення Відключений (Disabled). Тепер вам доведеться запускати деякі старі утиліти установки від імені адміністратора, проте нові самі будуть підвищувати себе до необхідного рівня.
Ще один спосіб посилити захист UAC - встановити для параметра Контроль облікових записів: підвищення прав тільки для підписаних і перевірених виконуваних файлів (User Account Control: Only elevate executables that are signed and validated) Ввімкнути (Enabled), щоб непідписані програми не могли виконуватися в режимі адміністратора.