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

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

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

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

uac запит буде запущено програму

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

Нам знадобиться утиліта Набір інструментів сумісності програм, Яка входить до складу Windows ADK. Завантажити актуальну версії Windows ADK для Windows 10 можна тут.

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

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

установка Інструментарій сумісності програм

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

Адміністратор сумісності програм

запустіть утиліту Адміністратор сумісності (32-розрядна версія) з правами адміністратора (!). У розділі Custom Databases, клацніть ПКМ по елементу New Database і виберіть пункт Створити Нове-> Виправлення програми.

створити виправлення програми

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

створити файл сумісності для додатка

Пропустіть наступне вікно майстра настройки (Режим сумісності), натиснувши Далі. У вікні Виправлення сумісності відзначте опцію RunAsInvoker.

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

виправлення сумісності - RunAsInvoker

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

Інформація про відповідність

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

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

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

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

sdbinst -q c:psregedit.sdb

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

Installation of regedit complete.

sdbinst

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

sdb файл в встановлених програм

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

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

запуск regedit.exe під звичайним користувачем - elevated = no

В такому процес відновлення та редагування реєстру користувач може редагувати лише власні гілки реєстру, але при спробі відредагувати / створити щось в системній HKLM, з’являється помилка “У вас немає необхідних дозволів“.

у користувача немає прав на модифікацію реєстру

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

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

sdbinst –u c:psregedit.sdb

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

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

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

  • Назва значення: C: windows regedit.exe
  • Дані про значення: RunAsInvoker

HKEY_CURRENT_USER  Software  Microsoft  Windows NT  CurrentVersion  AppCompatFlags  Layers RunAsInvoker

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

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

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

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

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

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

bat файл з параметром RUNASINVOKER

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *