Как отключить UAC для определенной программы в Windows 10?
В этой статье мы покажем, как выборочно отключить UAC для определенного приложения, не отключая полностью эту службу User Account Control. Рассмотрим несколько способов отключения контроля учетных записей для приложениия с помощью флага совместимости RunAsInvoker.
Флаг RunAsInvoker позволяет запустить приложение с маркером, унаследованным от родительского процесса. При этом отменяется обработка манифеста приложения, и обнаружение процессов установщика. Данный параметр не предоставляет права администратора, а только блокирует появление окна UAC.
Если программа требует прав администратора для запуска, т.к. меняет настройки системы или системные файлы, то при отключении UAC для нее привилегии пользователя в приложении не повышаются. Программа все равно будет запускаться с правами текущего пользователя и, если у нет полномочий на эти изменения, программа не сможет их внести. Также есть небольшое количество приложений, которые запускаются только в режиме “As administrator”, игнорирующие флаг совместимости RunAsInvoker.
В качестве примера мы отключим появление запроса User Account Control для редактора реестра (regedit.exe). Несмотря на то, что у моей учетной записи есть права администратора, при запуске утилиты все равно появляется запрос UAC на подтверждение запуска.
Отключение 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:Windowsregedit.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:psregedit.sdb
Если все сделали правильно, появится сообщение об успешном применении пакета.
Installation of regedit complete.
После установки пакета, соответствующая запись появится в списке установленных программ Windows (Programs and Features).
Попробуйте теперь запустить приложение в сессии пользователя без прав локального администратора. Теперь оно должно запуститься без появления запроса UAC.
Теперь проверьте, с какими привилегиями запущено данное приложение. Для этого в Task Manager на вкладке процессов добавьте столбец “Elevated”. Убедитесь, что процесс regedit.exe запущен от пользователя в непривилегированном режиме (
Elevated=No
).
В таком процесс редактора реестра пользователь может редактировать только собственные ветки реестра, но при попытке отредактировать/создать что-то в системной HKLM, появляется ошибка “You don’t have the requisite permissions”.
В дальнейшем это исправление совместимости можно распространить на компьютеры пользователей с помощью групповых политик. Тем самым можно добиться отключения проверки системы контроля учетных записей (UAC) для определенных приложений на множестве компьютеров в домене Active Directory.
Чтобы удалить исправление совместимости, выполните команду
sdbinst –u c:psregedit.sdb
Включить флаг RUNASINVOKER для программы через реестр
В Windows 10/8.1/7 вы можете включить флаг совместимости RUNASINVOKER через реестр. Флаг совместимости приложения можно выставить для одного пользователя или для всех пользователей компьютера:
Например, для regedit нужно в ветке реестра HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers создать новый строковый параметр (REG_SZ) вида:
- Value name: C:windowsregedit.exe
- Value data: RunAsInvoker
Если нужно включить режим совместимости приложения для всех пользователей компьютера, этот параметр нужно создать в ветке реестра: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers.
В домене можно распространить эти настройки реестра пользователям через GPO.
Bat файл для запуска приложения в режиме RunAsInvoker
Есть еще вариант для запуск приложения без прав администратора и подавлением запроса UAC (см. статью).
Просто создайте bat файл со следующим кодом:
Set ApplicationPath="C:windowsregedit.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"
При запуске этого bat файла под пользователем, указанное приложение запустится без появления запроса UAC.
Итак, мы рассмотрели, как отключить UAC для конкретной программы без полного отключения контроля учетных записей. Это позволит вам запускать программы Windows под обычным пользователем без появления запроса UAC и без пароля администратора.
Windows 7
Как отключить UAC для определенной программы в Windows 10?