PDA

Показать полную графическую версию : Проверка активности UAC


jkadaba
17-01-2021, 16:43
Проблема: нужно чтобы на тестируемых тачках был всегда включен UAC. До недавнего времени проверку делал через реестр командой
reg query hklm\software\microsoft\windows\currentversion\policies\system /v enablelua
где 0x1 - включен, иначе выключен. Так вот, чудеса в Решетове: на некоторых тачках UAC отключен, а значение по-прежнему единица, а не еще трёх всё с точностью до наоборот. Ребутнул системы, не помогло. Покопался в базе знаний мелкософта, но ничего для решения проблемы не нашел. На одной тачке (где не особо критично) форматнул диск, накатил систему заново, активировал по телефону, активация прошла успешно. Правда до этого в реестр не глядел, тормознул, блин ((((((. Система к инету не цеплялась, но та же фигня: ноль в реестре, а UAC робит. В чём засада?

greg zakharov
17-01-2021, 20:46
Для начала было бы логично заглянуть в журнал событий, но подозреваю, что они в системах в угоду производительности отключены. Так что если переходить исключительно к фактам, то, во-первых, проблема может таиться в брокере безопасности (в политиках указано одно, а брокер их попросту игнорирует), во-вторых, на реестр полагаться не следует, так как для самой MS реестр сродни некой складчине наследия, которое они от релиза к релизу грозятся упорядочить, но воз и ныне там. Возможно последнее является предпосылкой для различного рода недокументированных API, например, CheckElevationEnabled в kernel32.dll (сигнатура:
DWORD CheckElevationEnabled(
PBOOL pEnabled
);
), являющейся оберткой над RtlQueryElevationFlags из ntdll.dll (сигнатура:
NTSYSAPI
NTSTATUS
NTAPI
RtlQueryElevationFlags(
PRTL_ELEVATION_FLAGS Flags
);
), где RTL_ELEVATION_FLAGS - это объединение (union) для поля SharedDataFlags (смещение 0x2F0) и ряда битовых полей структуры KUSER_SHARED_DATA. В общем, если не заморачиваться с низкоуровневой реализацией вышеупомянутых функций, проверить включен ли UAC в pwsh можно теоретически так:
!!([Runtime.InteropServices.Marshal]::ReadInt32([IntPtr]0x7ffe02f0) -band 2)

jkadaba
17-01-2021, 22:21
Ну да, журналирование выключено. А почему такая фигня с брокером может быть?

greg zakharov
18-01-2021, 10:22
Потому. Чай ведь не телепат, причины разные могут быть.




© OSzone.net 2001-2012