Некоторое время назад я заметил, что при попытке какой-то программой запросить повышение привилегий, диалоговое окно UAC появляется, но экран не темнеет, а остаётся прозрачным. Это было неудобно хотя бы потому, что периодически оно теряло фокус. Началось это после какого-то обновления. Я выставил настройки UAC на уровень 4 и перезагрузил комп. Через некоторое время (было еще несколько перезагрузок) диалог UAC опять стал появляться без затемненного экрана, т.е. режим «Switch to the secure desktop when prompting for elevation» не работал.
Я решил попробовать настроить поведение UAC через политики.
Computer Configuration -> Windows Settings -> Security Settings-> Local Policies -> Security Options -> User Account Control: *
Behavior of the elevation prompt for administrators in Admin Approval Mode = Prompt for consent on the secure desktop Run all administrators in Admin Approval Mode = Enabled Switch to the secure desktop when prompting for elevation = Enabled
Применил полики:
gpupdate /force
Но когда запустил gpedit.msc снова, то увидел, что все значения опять были выставлены по дефолту!
Я подумал, что это KIS «балуется» и отключил его, но ничего не изменилось — политики не применялись. Причем не применялись только настройки UAC. Я проверил на других значениях — они успешно сохранялись!
Пока не понял, кто виноват…
Попробовал следующий способ:
- Нажать
Win +R - Ввести «msconfig» (без кавычек) и нажать
Enter - В появившемся окне перейти на вкладку «Tools»
- Выбрать пункт «Change UAC Settings» и затем нажать на кнопку в правом нижнем углу «Launch»
- Выставить желаемый уровень UAC и перезагрузить компьютер.
Теперь после перезагрузки у меня в GPO заданы три позиции:
- Behavior of the elevation prompt for administrators in Admin Approval Mode = Prompt for consent on the secure desktop
- Run all administrators in Admin Approval Mode = Enabled
- Switch to the secure desktop when prompting for elevation = Enabled
Ну это уже лучше!
Настройки через реестр.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000001
"ConsentPromptBehaviorAdmin"=dword:00000002
"ConsentPromptBehaviorUser"=dword:00000003
"PromptOnSecureDesktop"=dword:00000001
update 18.11.16:
Был установлен KIS 2017, при нем и была проблема. Решения, описанные выше, уже не помогали. Удалил его, поставил старую версию — KIS 2016. Как результат, проблема исчезла…
Да здравствует Касперыч :)
Сделай доступ «только для чтения» и не будут меняться.Light-XP
Будут «меняться» ;) Не помогало это, он просто очищал нафиг всю ветку [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System].
Как следствие, UAC устанавливался на уровень 3…
update 03.12.16:
В KIS2016 то же самое. К моим проблемам добавилась еще одна: теперь я не могу запустить редактор Unity. При запуске появляется интерфейс редактора частично — есть окно, меню, но нет окошек редактора, приложение зависает а через некоторое время вылетает утилита для отправки баг-репорта. Если KIS отключить (или отключить его компоненты), то ничего не помогает, т.к. в памяти висят драйвера:
Помогает только удаление KIS.
Пробовал установить аудит на удаление этой ветки реестра, удалял ее вручную, через редактор реестра — в Журнале событий никаких соответствующих событий не было. Не было и при удалении через PowerShell:
Remove-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
update 12.12.16:
Вооружился Process Monitor и отловил момент сброса настроек UAC:
Поясню, что именно он словил:
1. Я запускаю оснастку secpol.msc.
2. Меняю текущий уровень SRP. Например был уровень «Disallowed», я поменял его на «Unrestricted» (или наоборот).
3. Какой-то из драйверов KIS (не служба, т.к. я их все отключал) ловит это событие и удаляет все ключи в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
4. Поскольку ветка теперь чистая, система устанавливает ДЕФОЛТОВЫЙ уровень UAC, который к сожалению не Level 4, а Level 3.
Если менять уровень SRP через редактор реестра или через PowerShell, то проблемы НЕТ!
Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers -Name DefaultLevel -Value 0x00000000
update 05.01.17
Был какой-то конфликт при работе KIS и svchost.exe. Для того, чтобы триггер не срабатывал, пришлось создать в KIS исключение:
1. KIS -> Настройка -> Защита -> Контроль программ -> Управление ресурсами
2. Откроется окно настроек, в левой панели для ресурса «Операционная система» необходимо создать три исключающих правила в подразделе «Параметры безопасности», для этого нужно нажать на кнопку «Добавить»:
3. После этого нажимаем на строку «Ключ реестра» и выбираем HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
4. Повторяем действия для HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop
5. Потом то же самое для HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorUser
6. На панели с правой стороны выбираем «Вид» и снимаем галочку с «Скрывать системные программы», теперь можно будет увидеть svchost.exe.
7. Раскрываем группу «Microsoft» и находим там «Host Process for Windows Services»
8. По очереди выделяем новое правило из пункта 3-5 и для каждого из них на программе «Host Process for Windows Services» выставляем ЗАПРЕТ на удаление:
9. После всего этого нажимаем кнопку «Сохранить».
Теперь ветка реестра не будет очищаться, а значит проблема с изменением уровня UAC решена!
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024