Як відключити UAC для певної програми в Windows 10?

У цій статті ми покажемо, як вибірково відключити UAC для певної програми, що не відключаючи повністю цю службу User Account Control. Розглянемо кілька способів відключення контролю облікових записів для додатків за допомогою прапора сумісності RunAsInvoker.

Система контролю облікових записів (User Account Control або UAC) запитує у користувача підтвердження на виконання будь-якої дії, що вимагає прав адміністратора. Це досить ефективний механізм захисту Windows від різних загроз (віруси, трояни, черв'яки, руткіти і т.п). Деякий користувачів дратує вікно UAC і вони повністю відключають контроль облікових записів, хоча Microsoft і фахівці в області ІБ категорично не рекомендують робити це.

Прапор RunAsInvoker дозволяє запустити додаток з маркером, успадкованим від батьківського процесу. При цьому скасовується обробка маніфесту додатки, і виявлення процесів установника. Даний параметр не надає права адміністратора, а тільки блокує появу вікна UAC.

Якщо програма вимагає прав адміністратора для запуску, тому що змінює настройки системи або системні файли, то при відключенні UAC для неї привілеї користувача в додатку не підвищують. Програма все одно буде запускатися з правами поточного користувача і, якщо у немає повноважень на ці зміни, програма не зможе їх внести. Також є невелика кількість додатків, які запускаються тільки в режимі "As administrator", котрі ігнорують прапор сумісності RunAsInvoker.

Як приклад ми відключимо поява запиту User Account Control для редактора реєстру (regedit.exe). Незважаючи на те, що у мого профілю є права адміністратора, при запуску утиліти все одно з'являється запит UAC на підтвердження запуску.

зміст:

  • Відключення UAC для програми за допомогою Application Compatibility Toolkit
  • Включити прапор RUNASINVOKER для програми через реєстр
  • Bat файл для запуску програми в режимі RunAsInvoker

Відключення UAC для програми за допомогою Application Compatibility Toolkit

Нам знадобиться утиліта Application Compatibility Toolkit, яка входить до складу Windows ADK. Завантажити актуальну версію Windows ADK для Windows 10 можна тут.

Запустіть завантажений файл adksetup.exe і при установці (програмі потрібен доступ в Інтернет) виберіть тільки Application Compatibility Toolkit.

Примітка. пакет Microsoft Application Compatibility Toolkit - безкоштовний набір утиліт, призначений для усунення проблем сумісності додатків при переході на нові версії Windows.

В системі з'явиться дві версії Application Compatibility Administrator - 32-х і 64-х бітна версія. Запустіть версію Application Compatibility Administrator в залежності від розрядності додатки, для якого ви хочете придушити запит UAC.

запустіть утиліту Compatibility Administrator (32-bit) з правами адміністратора (!). У розділі Custom Databases, клацніть ПКМ по елементу New Database і виберіть пункт Create New-> Application Fix.

У вікні, потрібно вказати назву програми (regedit), виробника (Microsoft) і шлях до виконуваного файлу (C: \ Windows \ regedit.exe).

Пропустіть наступне вікно майстра настройки (Compatibility Mode), натиснувши Next. У вікні Compatibility Fixes відзначте опцію RunAsInvoker.

При бажанні можна переконатися, що додаток може працювати без UAC, натиснувши на кнопку тестового запуску (Test Run).

У вікні Matching Information ви можете вказати які параметри додатка потрібно перевіряти (версію, чексумму, розмір і т.д.). Я залишив включеними перевірки COMPANY_NAME, PRODUCT_NAME і ORIGINAL_FILENAME, щоб не пересоздавать файл виправлення після чергового оновлення Windows 10 і оновленні версії файлу regedit.

Порада. Для захисту від підміни виконуваного файлу зловмисником бажано використовувати перевірку по checksum, file_version і size. Відзначимо, що додаткові перевірки будуть кілька уповільнювати запуск програми.

натисніть Finish і вкажіть ім'я файлу, в який потрібно зберегти створений пакет виправлення сумісності, наприклад regedit.sdb. У цьому файлі будуть міститися інструкції по запуску додатка з заданими опціями сумісності.

Залишилося застосувати пакет з виправленням сумісності до вашого додатком. Зробити це можна безпосередньо з консолі Compatibility Administrator (вибравши в меню пункт Install), Або з командного рядка.

Для цього відкрийте командний рядок з правами адміністратора і виконайте команду:

sdbinst -q c: \ ps \ regedit.sdb

Якщо все зробили правильно, з'явиться повідомлення про успішне застосування пакета.

Installation of regedit complete.

Після установки пакета, відповідний запис з'явиться в списку встановлених програм Windows (Programs and Features).

Спробуйте тепер запустити додаток в сесії користувача без прав локального адміністратора. Тепер воно повинно запуститися без появи запиту UAC.

Тепер перевірте, з якими привілеями запущено цю програму. Для цього в Task Manager на вкладці процесів додайте стовпець "Elevated". Переконайтеся, що процес regedit.exe запущений від користувача в непривілейованому режимі (Elevated = No).

В такому процес редактора реєстру користувач може редагувати лише власні гілки реєстру, але при спробі відредагувати / створити щось в системній HKLM, з'являється помилка "You do not have the requisite permissions".

Надалі це виправлення сумісності можна поширити на комп'ютери користувачів за допомогою групових політик. Тим самим можна домогтися відключення перевірки системи контролю облікових записів (UAC) для певних програм на безлічі комп'ютерів в домені Active Directory.

Щоб видалити виправлення сумісності, виконайте команду

sdbinst -u c: \ ps \ regedit.sdb

Включити прапор RUNASINVOKER для програми через реєстр

У Windows 10 / 8.1 / 7 ви можете включити прапор сумісності RUNASINVOKER через реєстр. Прапор сумісність програми можна виставити для одного користувача або для всіх користувачів комп'ютера:

Наприклад, для regedit потрібно в гілці реєстру HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers створити новий строковий параметр (REG_SZ) Виду:

  • Value name: C: \ windows \ regedit.exe
  • Value data: RunAsInvoker

Якщо потрібно включити режим сумісності додатки для всіх користувачів комп'ютера, цей параметр потрібно створити в гілці реєстру: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers.

В домені можна поширити ці настройки реєстру користувачам через GPO.

Bat файл для запуску програми в режимі RunAsInvoker

Є ще варіант для запуску програми без прав адміністратора і придушенням запиту UAC (див. Статтю).

Просто створіть bat файл з наступним кодом:

Set ApplicationPath = "C: \ windows \ regedit.exe"
cmd / min / C "set __COMPAT_LAYER = RUNASINVOKER && start" "% ApplicationPath%"

При запуску цього bat файлу під користувачем, вказане додаток запуститься без появи запиту UAC.

Отже, ми розглянули, як відключити UAC для конкретної програми без повного відключення контролю облікових записів. Це дозволить вам запускати програми Windows під звичайним користувачем без появи запиту UAC і без пароля адміністратора.