РЕДАКТИРОВАТЬ: мой плохой, я не прочитал КБ достаточно тщательно, чтобы понять, что он в принципе бесполезен как ответ сам по себе.
Более полезный способ определить , если вы находитесь в безопасном режиме не из : Microsoft® Windows® Internals: Microsoft Windows ServerTM 2003, Windows XP, and Windows 2000от Mark E. Руссиновичем, Дэвид А. Соломона .
Ядро Windows сканирует параметры загрузки в поисках переключателей безопасного режима в начале загрузки и устанавливает для внутренней переменной InitSafeBootMode значение, которое отражает переключатели, найденные ядром. Ядро записывает значение InitSafeBootMode в значение реестра HKLM \ SYSTEM \ CurrentControlSet \ SafeBoot \ Option \ Option Value, чтобы компоненты пользовательского режима, такие как SCM, могли определить, в каком режиме загрузки находится система.
Возьмите вышеизложенное и соедините с нижеследующим, и у вас будет место в реестре, которое вы можете проверить с помощью числового значения, которое вы можете перевести во что-то полезное.
Из раздела support.microsoft KB под названием «Как определить, работает ли система в безопасном режиме из драйвера устройства».
Ядро ОС Windows экспортирует указатель на переменную ULONG с именем InitSafeBootMode. Эта переменная содержит настройки безопасного режима.
Драйвер устройства может определить, работает ли система в безопасном режиме, по значению переменной InitSafeBootMode. Значение 0 означает, что система не работает в безопасном режиме.
В следующей таблице перечислены режимы для других значений. Режим
значений 1 SAFEBOOT_MINIMAL 2 SAFEBOOT_NETWORK 3 * SAFEBOOT_DSREPAIR
* Примечание. Значение 3 применяется только к контроллерам домена Windows.