Перейти к содержанию
Asterios

Windows Security и виртуализация


HawkC4

Рекомендуемые сообщения

1 час назад, xEvaSaintx сказал:

попробуй в главном окне shift+F1 нажать или ctrl+shift+F1, у меня был тоже комп у которого расширенные настройки прятали пока не нажмёшь что то такое

Пробовал все комбинации которые нашел в интернете. И при выключенном ,и при перезагружаемом и при активном BIOS... Толку 0. Единственное, когда поставил пароль  админа BIOS начал двигаться ползунок, включения/отключения (вы поняли) СЕСЮРИТИ БООТ. 

P.S. Ноут Acer Nitro V 16 ANV16-41

Изменено пользователем Revaltor
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 89
  • Создана
  • Последний ответ

Топ авторов темы

7 часов назад, Revaltor сказал:

Пробовал все комбинации которые нашел в интернете. И при выключенном ,и при перезагружаемом и при активном BIOS... Толку 0. Единственное, когда поставил пароль  админа BIOS начал двигаться ползунок, включения/отключения (вы поняли) СЕСЮРИТИ БООТ. 

P.S. Ноут Acer Nitro V 16 ANV16-41

Там Дрин вроде починил все, у тебя также не работает? Попробуй переустановить Виндоус с помощью файла ответов, его можно создать онлайн. Там куча настроек можно отключить и виртуализации при установке 

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, zuz сказал:

Там Дрин вроде починил все, у тебя также не работает? Попробуй переустановить Виндоус с помощью файла ответов, его можно создать онлайн. Там куча настроек можно отключить и виртуализации при установке 

Винда лицензия с сайта Майкрософт, чистая. Лазил по настройкам, там где показывали Hiper-v отключить, там все отключено и виртуализация тоже. Кстати Винду два раза сносил заново. Тут загадка в BIOSе, куда я не могу добраться...

Ссылка на комментарий
Поделиться на другие сайты

22.08.2025 в 06:37, Revaltor сказал:

Винда лицензия с сайта Майкрософт, чистая. Лазил по настройкам, там где показывали Hiper-v отключить, там все отключено и виртуализация тоже. Кстати Винду два раза сносил заново. Тут загадка в BIOSе, куда я не могу добраться...

Ответ ии вдруг поможет) Ctrl + S пробовал чтобы увидеть скрытые настройки?

Скрытый текст

Для того чтобы отключить виртуализацию (VT или SVM) в BIOS на ноутбуке Acer Nitro V 16 ANV16-41, нужно войти в BIOS, найти соответствующую настройку и выключить её.

Вход в BIOS

Выключите ноутбук полностью.

Включите устройство и сразу же многократно нажимайте клавишу F2 до появления меню BIOS.

Если F2 не срабатывает, иногда может потребоваться сочетание Fn + F2.

Отключение виртуализации

В меню BIOS перейдите с помощью стрелок на вкладку Advanced.

Найдите пункт Intel VT-x или AMD-SVM (в зависимости от процессора устройства). Для AMD это обычно SVM или AMD-IOMMU.

Если опции не отображаются, попробуйте нажать Ctrl + S — у некоторых моделей Acer так открываются скрытые параметры.

Выберите нужную опцию (например, “SVM Mode” или “Intel Virtualization Technology”) и установите значение Disabled.

Для сохранения изменений нажмите F10 и подтвердите (Yes).

Важно

Иногда опция виртуализации по умолчанию включена и может быть недоступна для изменения на некоторых моделях.

Если не удаётся найти настройку, убедитесь, что у вас обновлён BIOS до последней версии — иногда новые настройки становятся доступны после обновления.

Если выполнение вышеуказанных действий не приводит к появлению нужной опции, скорее всего, функция скрыта или заблокирована производителем для этой модели.

 

Изменено пользователем zuz
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
В 25.08.2025 в 05:32, zuz сказал:

Ответ ии вдруг поможет) Ctrl + S пробовал чтобы увидеть скрытые настройки?

  Показать контент

Для того чтобы отключить виртуализацию (VT или SVM) в BIOS на ноутбуке Acer Nitro V 16 ANV16-41, нужно войти в BIOS, найти соответствующую настройку и выключить её.

Вход в BIOS

Выключите ноутбук полностью.

Включите устройство и сразу же многократно нажимайте клавишу F2 до появления меню BIOS.

Если F2 не срабатывает, иногда может потребоваться сочетание Fn + F2.

Отключение виртуализации

В меню BIOS перейдите с помощью стрелок на вкладку Advanced.

Найдите пункт Intel VT-x или AMD-SVM (в зависимости от процессора устройства). Для AMD это обычно SVM или AMD-IOMMU.

Если опции не отображаются, попробуйте нажать Ctrl + S — у некоторых моделей Acer так открываются скрытые параметры.

Выберите нужную опцию (например, “SVM Mode” или “Intel Virtualization Technology”) и установите значение Disabled.

Для сохранения изменений нажмите F10 и подтвердите (Yes).

Важно

Иногда опция виртуализации по умолчанию включена и может быть недоступна для изменения на некоторых моделях.

Если не удаётся найти настройку, убедитесь, что у вас обновлён BIOS до последней версии — иногда новые настройки становятся доступны после обновления.

Если выполнение вышеуказанных действий не приводит к появлению нужной опции, скорее всего, функция скрыта или заблокирована производителем для этой модели.

 

ноль реакции на эти манипуляции

Ссылка на комментарий
Поделиться на другие сайты

18.08.2025 в 18:52, Revaltor сказал:

Завтра попробую, отпишусь...😀 Короче попробовал. Всеравно вылетает ошибка - печалька. пойду танчики дротить...

попробуй также
 

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name "EnableVirtualizationBasedSecurity" -Value 0


должно помочь
сегодня ставил чистую винду, и без отключения клиент не стартовал

вот полный список команд для отключения всевозможной виртуализации в новых Win11: 
 

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" -Name Enabled -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name "EnableVirtualizationBasedSecurity" -Value 0
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Disable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Disable-WindowsOptionalFeature -Online -FeatureName WindowsHypervisorPlatform
bcdedit /set hypervisorlaunchtype off

Если это не помогло то в 99.9% проблема в включенной виртуализации в биосе

Изменено пользователем Рио
Ссылка на комментарий
Поделиться на другие сайты

Шаманить с биосом - плохая идея, фикс обязательно будет, но к этому времени ты просто превратишь свой ноут в кирпич. Не слушай горе советчиков, лучше играй в танки.

Ссылка на комментарий
Поделиться на другие сайты

 

В 13.09.2025 в 09:39, zotikos сказал:

Шаманить с биосом - плохая идея, фикс обязательно будет, но к этому времени ты просто превратишь свой ноут в кирпич. Не слушай горе советчиков, лучше играй в танки.

Та забил я на эти танцы с бубном. Еще недайбоже кирпич сделаю. Буду ждать фикс. А от танков давление поднимается ))) так на старенькие экшены подсел)))

Ссылка на комментарий
Поделиться на другие сайты

On 9/13/2025 at 9:39 AM, zotikos said:

фикс обязательно будет

 

On 9/17/2025 at 7:58 PM, Revaltor said:

Та забил я на эти танцы с бубном. Еще недайбоже кирпич сделаю. Буду ждать фикс.

если проблема именно в виртуализации то не будет фикса. Вопрос есть ли она в биосе или смогли ее коректно отрубить в самой винде. 

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Я же написал в посте 7 сентября полный список команд для отключения виртуализации
они помогают в 99.9% случаев
если не помогли  - значит ты крабас

Изменено пользователем Рио
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Ноут Асер с процессором AMD 8840HS, в биосе нету настройки виртуализации, Ctrl + S не показывает скрытые настройки, но в винде виртуализация включена (вин11 25Н2), соответственна игра не запускается (пишет что не может работать под виртуальной машиной). Советы по отключению виртуализации из этой темы не помогли.

На компе (процессор Intel i5-11400F) с вин11 25Н2 виртуализация в биосе включена, но изоляция ядра отключена в настройках винды, игра работает.

По-моему тут дело в чем-то другом.

Ссылка на комментарий
Поделиться на другие сайты

Рылся в настройках защиты и нашел это:

image.thumb.png.c8c5c79fc5d4885aa6df3731e4ae1a81.png

Memory Access Protections не удается отключить никак, в графическом интерфейсе просто нет ползунка на отключение, в редакторе реестра на отключение не реагирует. Это часть изоляции ядра, которое видимо не дает запустить игру. Попробую установить виндовс 10, хоть под нее официально нет драйверов.

Ссылка на комментарий
Поделиться на другие сайты

Установил 10-ю винду вместо 11-й, дрова с 11-й стали нормально на 10-ю, виртуализация в биосе включена, в винде ничего не настраивал, в безопасности винды memory integrity отключено по умолчанию, л2 астериос заработало. В общем 11-я винда это помойка, в ней не только астериос не работал, но и другой софт.

Винду 10 все еще можно скачать с официального сайта микрософт: https://www.microsoft.com/ru-ru/software-download/windows10

Изменено пользователем ixthUA
Ссылка на комментарий
Поделиться на другие сайты

15.11.2025 в 04:20, ixthUA сказал:

Установил 10-ю винду вместо 11-й, дрова с 11-й стали нормально на 10-ю, виртуализация в биосе включена, в винде ничего не настраивал, в безопасности винды memory integrity отключено по умолчанию, л2 астериос заработало. В общем 11-я винда это помойка, в ней не только астериос не работал, но и другой софт.

Винду 10 все еще можно скачать с официального сайта микрософт: https://www.microsoft.com/ru-ru/software-download/windows10

для чего ты себе жизнь усложняешь и пытаешься отключить то что фактически нельзя отключить?
я выше кидал команды для отключения виртуализации, на вин11 они прекрасно работают
недавно ставил 11 винду и все отключается и астериос запускается
 

Изменено пользователем Рио
Ссылка на комментарий
Поделиться на другие сайты

Команды конечно работают, но они делают из Вин11 непонятно что в плане безопасности. На вин10 астериос работает "из коробки".

Ссылка на комментарий
Поделиться на другие сайты

Такая же проблема с Windows 11 Pro (24H2) - не запускает, тоже перепробовала всё, на старом ноуте Win 10 ( всё работает), но ноут умирает, там не реально играть.
В Win 11 вшита виртуальизация при Windows Hello и оно при запуске по новой запускает и всё, решение только как-то откатывать Win 24H2 - но мне в магазине установили уже такую при покупке нового ноута



Лаунчер не адаптирован под новые системы, блокирует даже если это вшитое в cаму винду, так что дело тех кто установил такую кривую защиту, чтобы окна продавать :D

 

Изменено пользователем Misona
Ссылка на комментарий
Поделиться на другие сайты

17.11.2025 в 22:31, Misona сказал:

Такая же проблема с Windows 11 Pro (24H2) - не запускает

image.thumb.png.219268f133169174da8018711f5d8176.png

Ссылка на комментарий
Поделиться на другие сайты

16.11.2025 в 15:24, ixthUA сказал:

Команды конечно работают, но они делают из Вин11 непонятно что в плане безопасности. На вин10 астериос работает "из коробки".

ты в любом случае чтобы запустить астериос должен клиенту и защите разрешить доступ к системе на уровне ядра

астериос будь то 10тка 11тка или 7рка у тебя не запустится с активной защитой ядра
так что смысла тут говорить о безопасности нет, хочешь играть - принимай риски 

 

то что у тебя на вин10 астериос работает "из коробки" свидетельствует только о том что у тебя не официальный образ винды, с отключёнными по умолчанию memory integrity

Изменено пользователем Рио
Ссылка на комментарий
Поделиться на другие сайты

У меня официальная вин10, скачанная с сайта микрософта.

Кстати, на вин11 (тоже официальная, с сайта микрософта), на компе астериос работает без использования команд из этого гайда, а на ноутбуке с вин11 астериос не работает даже с командами из этого гайда.

И не вижу смысла качать сборки винды - официальные образы в открытом доступе на сайте микрософта, им не требуется активация для работы.

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, ixthUA сказал:

У меня официальная вин10, скачанная с сайта микрософта.

Кстати, на вин11 (тоже официальная, с сайта микрософта), на компе астериос работает без использования команд из этого гайда, а на ноутбуке с вин11 астериос не работает даже с командами из этого гайда.

И не вижу смысла качать сборки винды - официальные образы в открытом доступе на сайте микрософта, им не требуется активация для работы.

значит на компе защита ядра не включалась
на ноуте видимо изоляция - по умолчанию включена

все довольно просто, изоляция отключена - астериос работает, изоляция включена - не работает

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
В 19.11.2025 в 05:02, MadeInUkraine сказал:

image.thumb.png.219268f133169174da8018711f5d8176.png

И как же ты победил виртуализацию? Я уже настолько натыкала в реестре, что наверное придётся откатывать его:( 

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Misona сказал:

И как же ты победил виртуализацию? Я уже настолько натыкала в реестре, что наверное придётся откатывать его:( 

кажется этим:

https://forum.asterios.in/topic/575544-windows-security-i-virtualizacija/#comment-9360281

 

если у тебя другая проблема, искал по форуму по тексту ошибки, ничего особого не делал

Ссылка на комментарий
Поделиться на другие сайты

27.07.2023 в 21:40, hardhaha сказал:

Короче, я решил проблему так :
ctrl + shift+ esc
потом вкладка производительность
если у вас написано виртуализация включена:
1)Ребут компа, и заходите в биос(кликаете кнопку Del)
2)В биосе заходите в Advanced mode
3)Ищите там виртуализацию и отключаете ее, сохраняете (f10) - и все заработает
image.thumb.png.e5310871279473afd93b90a0efdf43da.png

 



27.07.2023 в 21:40, hardhaha сказал:

Короче, я решил проблему так :
ctrl + shift+ esc
потом вкладка производительность
если у вас написано виртуализация включена:
1)Ребут компа, и заходите в биос(кликаете кнопку Del)
2)В биосе заходите в Advanced mode
3)Ищите там виртуализацию и отключаете ее, сохраняете (f10) - и все заработает
image.thumb.png.e5310871279473afd93b90a0efdf43da.png

а если в биосе на вкладке advanced нету ничего об виртуализации

Ссылка на комментарий
Поделиться на другие сайты

В Биосе отлючайте опцию SVM (Secure Virtual Machine) (у меня проц amd, материнка гигабайт).

Надеюсь кому то поможет.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

У меня так на Chatreey GEM Мини-ПК R7 8845HS 780M (AMD)

Версия BIOS:                             American Megatrends International, LLC. 1.00, 12.10.2024

 

BIOS -> Advanced -> CPU Common Option

...

SVM Lock [Auto]

SVM Enable [Auto]

...

Пока не отключал. Присмотрюсь к методам решения.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Вот и установилось обновление для Windows 11, версия 26H1. И астериос сказал покасики. Ничего не помогает, даже через биос виртуалку отключал, все методы перепробовал. @Admin вы уже чините? Очень хочется играть, меня Куттер с 15 на 16 ждет 

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Перепробовал абсолютно все варианты отключения виртуализации, и в биосе, и через командные строки, и через powershell, всё всё всё. Не помогает совершенно ничего. 

К сожалению, как мне кажется, что админы смогут как-то помочь с данной ситуацией, либо надо ставить 10 винду.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

У всех у кого заблокированы доп пункты биоса на ноуте, сделал как в этом видео https://www.youtube.com/watch?v=-kmpcVdGwHE, отключил виртуализацию (AMD SVM) и игра заработал, винда 11 последняя 

Ссылка на комментарий
Поделиться на другие сайты

у меня есть комп на котором биос заблочен и там не вырубить виатуализацию . Я с того компа в Л2 ваще никак не зайду?

Ссылка на комментарий
Поделиться на другие сайты

Скрытый текст

@setlocal DisableDelayedExpansion
@echo off
setlocal EnableExtensions
setlocal DisableDelayedExpansion

set "PathExt=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
set "SysPath=%SystemRoot%\System32"
set "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\"
if exist "%SystemRoot%\Sysnative\reg.exe" (
    set "SysPath=%SystemRoot%\Sysnative"
    set "Path=%SystemRoot%\Sysnative;%SystemRoot%;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%"
)
set "ComSpec=%SysPath%\cmd.exe"
set "PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SysPath%\WindowsPowerShell\v1.0\Modules"

set "re1="
set "_cmdf=%~f0"
for %%# in (%*) do if /i "%%#"=="re1" set "re1=1"

if exist %SystemRoot%\Sysnative\cmd.exe if not defined re1 (
    setlocal EnableDelayedExpansion
    start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %* re1"
    exit /b
)

set "_work=%~dp0"
if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%"

set "_batf=%~f0"
set "_batp=%_batf:'=''%"

set _PSarg="""%~f0""" %*
set _PSarg=%_PSarg:'=''%

set "_ttemp=%userprofile%\AppData\Local\Temp"

setlocal EnableDelayedExpansion

echo "!_batf!" | find /i "!_ttemp!" >nul 2>&1 && (
if /i not "!_work!"=="!_ttemp!" (
    echo.
    echo The script was launched from the Temp folder.
    echo This usually means it was run directly from the archive.
    echo.
    echo Extract the archive file and run the script from the extracted folder.
    echo.
    echo Press any key to exit...
    pause >nul
    exit /b
    )
)

fltmc >nul 2>&1
if errorlevel 1 (
    echo.
    echo This script requires administrator privileges.
    echo.
    echo A UAC prompt will appear. Please click "Yes".
    echo.
    "%SysPath%\WindowsPowerShell\v1.0\powershell.exe" -nop -c "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b
    exit /b
)

set "ps=%SysPath%\WindowsPowerShell\v1.0\powershell.exe"
set "psc=%ps% -nop -c"
for /f %%a in ('echo prompt $E^| cmd') do set "ESC=%%a"
set "cYellow=%ESC%[40;93m"
set "cGreen=%ESC%[42;97m"
set "cRedHL=%ESC%[41;97m"
set "cBlueHL=%ESC%[44;97m"
set "cGreyHL=%ESC%[100;97m"
set "cReset=%ESC%[0m"

call :dk_sysinfo

set "_NCS=1"
if !winbuild! LSS 10586 set "_NCS=0"
if !winbuild! GEQ 10586 reg query "HKCU\Console" /v ForceV2 >nul 2>&1 | find /i "0x0" >nul 2>&1 && set "_NCS=0"
for /f "tokens=3" %%A in ('reg query "HKCU\Console" /v VirtualTerminalLevel 2^>nul') do if "%%A"=="0x0" set "_NCS=0"
if "!_NCS!"=="0" (
    set "cYellow="
    set "cGreen="
    set "cRed="
    set "cRedHL="
    set "cBlueHL="
    set "cGreyHL="
    set "cReset="
)

set "bootid="
for /f "tokens=2" %%A in ('bcdedit /enum {default} /v 2^>nul ^| findstr /i "identifier"') do set "bootid=%%A"

::pstst $ExecutionContext.SessionState.LanguageMode :pstst

for /f "delims=" %%a in ('%psc% "if ($PSVersionTable.PSEdition -ne 'Core') {$f=[System.IO.File]::ReadAllText('!_batp!') -split ':pstst';. ([scriptblock]::Create($f[1]))}" 2^>nul') do (set tstresult=%%a)

if /i not "%tstresult%"=="FullLanguage" (
echo.
for /f "delims=" %%a in ('%psc% "$ExecutionContext.SessionState.LanguageMode" 2^>nul') do (set tstresult2=%%a)
echo Test 1 - %tstresult%
echo Test 2 - !tstresult2!
echo.

echo !tstresult2! | findstr /i "ConstrainedLanguage RestrictedLanguage NoLanguage" >nul 2>&1 && (
echo FullLanguage mode not found in PowerShell. Aborting...
echo If you have applied restrictions on PowerShell then undo those changes.
echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
echo.
echo %cYellow%Press any key to exit...%cReset%
pause >nul
exit /b
)

cmd /c "%psc% "$PSVersionTable.PSEdition"" | find /i "Core" >nul 2>&1 && (
echo Windows PowerShell is needed but seems to have been replaced with PowerShell Core. Aborting...
echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
echo.
echo %cYellow%Press any key to exit...%cReset%
pause >nul
exit /b
)

for /r "%ProgramFiles%\" %%f in (secureboot.exe) do if exist "%%f" (
echo "%%f"
echo Malware found, PowerShell is not working properly.
echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
echo.
echo %cYellow%Press any key to exit...%cReset%
pause >nul
exit /b
)

if /i "!tstresult2!"=="FullLanguage" (
cmd /c "%psc% ""try {[System.AppDomain]::CurrentDomain.GetAssemblies(); [System.Math]::Sqrt(144)} catch {Exit 3}""" >nul 2>&1
if !errorlevel!==3 (
echo Windows PowerShell failed to load .NET command. Aborting...
echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
echo.
echo %cYellow%Press any key to exit...%cReset%
pause >nul
exit /b
)
)

echo PowerShell is not working properly. Aborting...

if /i "!tstresult2!"=="FullLanguage" (
echo.
echo Your antivirus software might be blocking the script.
echo.
sc query sense | find /i "RUNNING" >nul 2>&1 && (
echo Installed Antivirus - Microsoft Defender for Endpoint
)
cmd /c "%psc% ""$av = Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct; $n = @(); foreach ($i in $av) { $n += $i.displayName }; if ($n) { Write-Host ('Installed Antivirus - ' + ($n -join ', '))}"""
)

echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
echo.
echo %cYellow%Press any key to exit...%cReset%
pause >nul
exit /b
)

if %winbuild% GEQ 17763 (
set terminal=1
) else (
set terminal=
)

if defined terminal (
set lines=0
for /f "skip=3 tokens=* delims=" %%A in ('mode con') do if "!lines!"=="0" (
for %%B in (%%A) do set lines=%%B
)
if !lines! GEQ 100 set terminal=
)

for %%# in (%*) do if /i "%%#"=="-qedit" goto :skipQE

set resetQE=1
reg query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" 1>nul && set resetQE=0
reg add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f 1>nul

if defined terminal (
start conhost.exe "!_batf!" -qedit
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f 1>nul
exit /b
) else if %resetQE% EQU 1 (
start cmd.exe /c ""!_batf!" -qedit"
start reg add HKCU\Console /v QuickEdit /t REG_DWORD /d %resetQE% /f 1>nul
exit /b
)

:skipQE

:title

title VBS 1.6
if not defined terminal (
    %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=32;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" >nul 2>&1
)

:dk_prompt

cls

echo.
echo  %cGreen%Notes:%cReset%
echo.
echo  - This script disables the Windows hypervisor and Virtualization-based Security ^(VBS^) with its
echo  dependent features. Only features that are currently active will be modified.
echo.
echo  - On older Intel CPUs ^(and rarely, older AMD CPUs^), KVA Shadow will also be disabled as it
echo  conflicts with our syscall hook implementation.
echo.
echo  %cBlueHL%- If Windows Hello ^(PIN, fingerprint or facial recognition^) is VBS-protected, it will be automatically removed.%cReset%
echo  %cBlueHL%After restarting, sign in using your password or your Microsoft account's password.%cReset%
echo.
echo  - Most kernel anti-cheats do not function with driver signature enforcement disabled.
echo  Certain anti-cheats, like FACEIT AC, may prevent the driver from starting. In rare cases,
echo  Vanguard may trigger a BSOD, most notably after disabling driver signature enforcement.
echo.
echo  - If affected, it is recommended to uninstall the problematic anti-cheat.
echo.
echo  - This script must be run before each play session, as driver signature enforcement
echo  is only disabled for one boot cycle.
echo.
echo  %cGreen%- All changes can be fully reverted using the Revert Changes option.%cReset%
echo( ________________________________________________________________________
echo.
echo  - Save your work before continuing, as you will be asked to restart.
echo.
echo  - When restarting, you will need to disable driver signature enforcement by pressing F7 on your keyboard
echo  within the Startup Settings.
echo( ________________________________________________________________________
echo.
choice /C:1234 /N /M "[1] Continue [2] Exit [3] Revert Changes [4] Troubleshoot:
if !errorlevel!==2 exit /b
if !errorlevel!==3 goto :dk_revert
if !errorlevel!==4 goto :dk_troubleshoot

:dk_showosinfo

cls

set "haderror=0"

echo.
echo Checking OS Info                        [!winos! ^| !fullbuild! ^| !osarch!]
echo Initiating Diagnostic Tests...

call :dk_checkwmic

set "wmifailed="
set "wmicheck="
if !_wmic! EQU 1 (
    for /f %%A in ('wmic path Win32_ComputerSystem get CreationClassName /value 2^>nul ^| find /i "computersystem"') do set "wmicheck=1"
)
if !_wmic! EQU 0 (
    for /f %%A in ('%psc% "Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2^>nul ^| find /i "computersystem"') do set "wmicheck=1"
)
if not defined wmicheck set "wmifailed=1"
if defined wmifailed (
    echo.
    echo Checking WMI                            %cRedHL%[Not Working]%cReset%
    echo.
    echo %cRedHL%Go to Troubleshoot in the main menu and run Fix WMI.%cReset%
    echo.
    echo %cYellow%Press any key to go back...%cReset%
    pause >nul
    goto :dk_prompt
)

set "vtx=0"
set "hvpresent=0"
for /f "delims=" %%s in ('%psc% "(Get-CimInstance Win32_ComputerSystem).HypervisorPresent"') do (
    if /i "%%s"=="True" set "hvpresent=1"
)
for /f "delims=" %%s in ('%psc% "(Get-CimInstance -ClassName Win32_Processor).VirtualizationFirmwareEnabled"') do (
    if /i "%%s"=="True" set "vtx=1"
)

if "!hvpresent!"=="1" set "vtx=1"

if "!vtx!"=="1" (
    echo.
    echo Checking Virtualization                 %cGreen%[Enabled]%cReset%
) else (
    echo.
    echo %cRedHL%Virtualization ^(VT-x/SVM^) is not enabled in the BIOS.%cReset%
    echo.
    echo %cRedHL%Please enable it in your BIOS/UEFI settings.%cReset%
    echo.
    echo %cYellow%Press any key to exit...%cReset%
    pause >nul
    exit /b
)

set "dse="
for /f "delims=" %%A in ('%psc% "$t=Add-Type -PassThru -MemberDefinition '[DllImport(\"ntdll.dll\")] public static extern uint NtQuerySystemInformation(int c,IntPtr b,uint s,out uint r);' -Name CI2 -Namespace w2; $p=[Runtime.InteropServices.Marshal]::AllocHGlobal(8); [Runtime.InteropServices.Marshal]::WriteInt32($p,8); $r=[uint32]0; $t::NtQuerySystemInformation(103,$p,8,[ref]$r)|Out-Null; $o=[uint32][Runtime.InteropServices.Marshal]::ReadInt32($p,4); if(-not($o -band 1)){0}elseif($o -band 2){1}else{2}" 2^>nul') do set "dse=%%A"
if "!dse!"=="0" (
    echo.
    echo Checking Driver Signature Enforcement   %cGreen%[Disabled]%cReset%
)
if "!dse!"=="1" (
    echo.
    echo Checking Test Signing                   %cGreen%[Enabled]%cReset%
)

set "faceit="
fltmc | findstr /i "FACEIT" >nul 2>&1
if not errorlevel 1 set "faceit=1"

if defined faceit (
    echo.
    echo Checking FACEIT Anti-Cheat              %cYellow%[Found]%cReset%
    reg add "HKLM\SOFTWARE\ManageVBS" /v FACEIT /t REG_DWORD /d 1 /f >nul 2>&1
    sc stop FACEIT >nul 2>&1
    sc stop FACEITService >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Services\FACEIT" /v Start /t REG_DWORD /d 4 /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Services\FACEITService" /v Start /t REG_DWORD /d 4 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo Disabling FACEIT Anti-Cheat             %cGreen%[Successful]%cReset%
    ) else (
        echo Disabling FACEIT Anti-Cheat             %cRedHL%[Failed]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v FACEIT /f >nul 2>&1
        set "haderror=1"
    )
)

set "dgquery="
for /f "delims=" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /s 2^>nul') do set "dgquery=1"

if defined dgquery (

    set "vbslocked="
    set "hvcilocked="
    set "cglocked="
    set "mandatorylocked="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v Locked 2^>nul') do if "%%A"=="0x1" set "vbslocked=1"
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Locked 2^>nul') do if "%%A"=="0x1" set "hvcilocked=1"
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags 2^>nul') do if "%%A"=="0x1" set "cglocked=1"
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v Mandatory 2^>nul') do if "%%A"=="0x1" set "mandatorylocked=1"

    set "anylocked="
    if defined vbslocked set "anylocked=1"
    if defined hvcilocked set "anylocked=1"
    if defined cglocked set "anylocked=1"
    if defined anylocked (
    
        set "uefiagreed="
        reg query "HKLM\SOFTWARE\ManageVBS" /v UEFILockAgreed >nul 2>&1
        if "!errorlevel!"=="0" set "uefiagreed=1"
        if not defined uefiagreed (
            echo.
            echo %cRedHL%One or more security features are protected by a UEFI lock.%cReset%
            echo %cRedHL%Only proceed on personal devices. Do not proceed on work, school or managed devices.%cReset%
            echo %cRedHL%Removing UEFI locks may violate your organization's security policies.%cReset%
            echo.
            choice /C:12 /N /M "[1] Continue [2] Exit:
            if !errorlevel!==2 exit /b
            %psc% "$k=Add-Type -PassThru -MemberDefinition '[DllImport(\"kernel32.dll\")]public static extern bool SetConsoleMode(IntPtr h,uint m);[DllImport(\"kernel32.dll\")]public static extern IntPtr GetStdHandle(int h);' -Name k -Namespace w;$k::SetConsoleMode($k::GetStdHandle(-11),7)" >nul 2>&1
            reg add "HKLM\SOFTWARE\ManageVBS" /v UEFILockAgreed /t REG_DWORD /d 1 /f >nul 2>&1
        )
        
        if not exist "%SystemRoot%\System32\SecConfig.efi" (
            echo.
            echo %cRedHL%SecConfig.efi was not found on this system.%cReset%
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
        
        set "freedrive="
        for %%D in (S T U V W X Y Z) do (
            if not defined freedrive (
                if not exist %%D:\ set "freedrive=%%D:"
            )
        )
        
        if not defined freedrive (
            echo.
            echo %cRedHL%No available drive letter found for EFI partition mount.%cReset%
            echo %cRedHL%Please unmount a drive assigned to a letter between S and Z and try again.%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
        
    )

    if defined vbslocked (
        echo.
        echo %cYellow%Virtualization-based Security ^(VBS^) is protected by a UEFI lock.%cReset%
        echo %cYellow%Attempting to disable via SecConfig.efi...%cReset%
        echo.
        echo %cYellow%VBS protected by a UEFI lock can only be disabled for one boot cycle on managed devices.%cReset%

        reg add "HKLM\SOFTWARE\ManageVBS" /v VBSLocked /t REG_DWORD /d 1 /f >nul 2>&1
        
        set "secfailed="

        reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v EnableVirtualizationBasedSecurity /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v RequirePlatformSecurityFeatures /f >nul 2>&1
        reg delete "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity /f >nul 2>&1
        reg delete "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v RequirePlatformSecurityFeatures /f >nul 2>&1

        mountvol !freedrive! /s >nul 2>&1 || set "secfailed=1"
        copy "%SystemRoot%\System32\SecConfig.efi" "!freedrive!\EFI\Microsoft\Boot\SecConfig.efi" >nul 2>&1 || set "secfailed=1"

        if not defined secfailed (
            bcdedit /delete {0cb3b571-2f2e-4343-a879-d86a476d7215} >nul 2>&1
            bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DGOptOut" /application osloader >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi" >nul 2>&1 || set "secfailed=1"
            bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215} !bootid! >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=!freedrive! >nul 2>&1 || set "secfailed=1"
        )

        mountvol !freedrive! /d >nul 2>&1

        if not defined secfailed (
            echo.
            echo %cGreen%UEFI lock will be cleared on next boot via SecConfig.efi.%cReset%
            echo %cYellow%You will need to confirm the opt-out prompt during the next boot.%cReset%
        ) else (
            reg delete "HKLM\SOFTWARE\ManageVBS" /v VBSLocked /f >nul 2>&1
            echo.
            echo %cRedHL%Failed to set up SecConfig.efi. VBS UEFI lock could not be cleared.%cReset%
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
    )

    if defined hvcilocked (
        echo.
        echo %cYellow%Memory Integrity ^(HVCI^) is protected by a UEFI lock.%cReset%
        echo %cYellow%Attempting to disable via SecConfig.efi...%cReset%
        echo.
        echo %cYellow%HVCI protected by a UEFI lock can only be disabled for one boot cycle on managed devices.%cReset%

        reg add "HKLM\SOFTWARE\ManageVBS" /v HVCILocked /t REG_DWORD /d 1 /f >nul 2>&1
        
        set "secfailed="

        reg delete "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled /f >nul 2>&1

        mountvol !freedrive! /s >nul 2>&1 || set "secfailed=1"
        copy "%SystemRoot%\System32\SecConfig.efi" "!freedrive!\EFI\Microsoft\Boot\SecConfig.efi" >nul 2>&1 || set "secfailed=1"

        if not defined secfailed (
            bcdedit /delete {0cb3b571-2f2e-4343-a879-d86a476d7215} >nul 2>&1
            bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DGOptOut" /application osloader >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi" >nul 2>&1 || set "secfailed=1"
            bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215} !bootid! >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=!freedrive! >nul 2>&1 || set "secfailed=1"
        )

        mountvol !freedrive! /d >nul 2>&1

        if not defined secfailed (
            echo.
            echo %cGreen%UEFI lock will be cleared on next boot via SecConfig.efi.%cReset%
            echo %cYellow%You will need to confirm the opt-out prompt during the next boot.%cReset%
        ) else (
            reg delete "HKLM\SOFTWARE\ManageVBS" /v HVCILocked /f >nul 2>&1
            echo.
            echo %cRedHL%Failed to set up SecConfig.efi. HVCI UEFI lock could not be cleared.%cReset%
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
    )

    if defined cglocked (
        echo.
        echo %cYellow%Credential Guard is protected by a UEFI lock.%cReset%
        echo %cYellow%Attempting to disable via SecConfig.efi...%cReset%

        reg add "HKLM\SOFTWARE\ManageVBS" /v CGLocked /t REG_DWORD /d 1 /f >nul 2>&1
        
        set "secfailed="

        reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v LsaCfgFlags /f >nul 2>&1
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1

        mountvol !freedrive! /s >nul 2>&1 || set "secfailed=1"
        copy "%SystemRoot%\System32\SecConfig.efi" "!freedrive!\EFI\Microsoft\Boot\SecConfig.efi" >nul 2>&1 || set "secfailed=1"

        if not defined secfailed (
            bcdedit /delete {0cb3b571-2f2e-4343-a879-d86a476d7215} >nul 2>&1
            bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DGOptOut" /application osloader >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi" >nul 2>&1 || set "secfailed=1"
            bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215} !bootid! >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO >nul 2>&1 || set "secfailed=1"
            bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=!freedrive! >nul 2>&1 || set "secfailed=1"
        )

        mountvol !freedrive! /d >nul 2>&1

        if not defined secfailed (
            echo.
            echo %cGreen%UEFI lock will be cleared on next boot via SecConfig.efi.%cReset%
            echo %cYellow%You will need to confirm the opt-out prompt during the next boot.%cReset%
        ) else (
            reg delete "HKLM\SOFTWARE\ManageVBS" /v CGLocked /f >nul 2>&1
            echo.
            echo %cRedHL%Failed to set up SecConfig.efi. Credential Guard UEFI lock could not be cleared.%cReset%
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
    )

    if defined mandatorylocked (
        echo.
        echo %cYellow%VBS and HVCI are running in mandatory mode.%cReset%
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v Mandatory /t REG_DWORD /d 0 /f >nul 2>&1
        if "!errorlevel!"=="0" (
            echo.
            echo %cGreen%Mandatory mode disabled successfully.%cReset%
        ) else (
            echo.
            echo %cRedHL%Failed to disable mandatory mode.%cReset%
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
    )

    set "winhello="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\WindowsHello" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "winhello=1"
    )
    if defined winhello (
        echo.
        echo Checking Windows Hello Protection       %cYellow%[Found]%cReset%
        reg add "HKLM\SOFTWARE\ManageVBS" /v WindowsHello /t REG_DWORD /d 1 /f >nul 2>&1
        set "pwdless_orig="
        for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion 2^>nul') do set "pwdless_orig=%%A"
        if defined pwdless_orig (
            reg add "HKLM\SOFTWARE\ManageVBS" /v PasswordLessBuildVersion /t REG_SZ /d "!pwdless_orig!" /f >nul 2>&1
        )
        reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion /t REG_DWORD /d 0 /f >nul 2>&1
        certutil -DeleteHelloContainer >nul 2>&1
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\WindowsHello" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        if "!errorlevel!"=="0" (
            echo Disabling Windows Hello Protection      %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling Windows Hello Protection      %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v WindowsHello /f >nul 2>&1
            set "haderror=1"
        )
    )
    
    set "secbio="
    set "secbioscenario="
    set "secbiowhs="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SecureBiometrics" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "secbio=1"
    )
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios" /v SecureBiometrics 2^>nul') do (
        if "%%A"=="0x1" set "secbioscenario=1"
    )
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\WindowsHelloSecureBiometrics" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "secbiowhs=1"
    )
    if defined secbio set "anysecbio=1"
    if defined secbioscenario set "anysecbio=1"
    if defined secbiowhs set "anysecbio=1"
    if defined anysecbio (
        echo.
        echo Checking Enhanced Sign-in Security      %cYellow%[Found]%cReset%
        if defined secbio (
            reg add "HKLM\SOFTWARE\ManageVBS" /v SecureBiometrics /t REG_DWORD /d 1 /f >nul 2>&1
            reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SecureBiometrics" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        )
        if defined secbioscenario (
            reg add "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsScenario /t REG_DWORD /d 1 /f >nul 2>&1
            reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios" /v SecureBiometrics /t REG_DWORD /d 0 /f >nul 2>&1
        )
        if defined secbiowhs (
            reg add "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsWHS /t REG_DWORD /d 1 /f >nul 2>&1
            reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\WindowsHelloSecureBiometrics" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        )
        if "!errorlevel!"=="0" (
            echo Disabling Enhanced Sign-in Security     %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling Enhanced Sign-in Security     %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v SecureBiometrics /f >nul 2>&1
            reg delete "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsScenario /f >nul 2>&1
            reg delete "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsWHS /f >nul 2>&1
            set "haderror=1"
        )
    )

    set "hyperguard="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HyperGuard" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "hyperguard=1"
    )
    if defined hyperguard (
        echo.
        echo Checking HyperGuard                     %cYellow%[Found]%cReset%
        reg add "HKLM\SOFTWARE\ManageVBS" /v HyperGuard /t REG_DWORD /d 1 /f >nul 2>&1
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HyperGuard" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        if "!errorlevel!"=="0" (
            echo Disabling HyperGuard                    %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling HyperGuard                    %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v HyperGuard /f >nul 2>&1
            set "haderror=1"
        )
    )

    set "guardedhost="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\Host-Guardian" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "guardedhost=1"
    )
    if defined guardedhost (
        echo.
        echo Checking Guarded Host                   %cYellow%[Found]%cReset%
        reg add "HKLM\SOFTWARE\ManageVBS" /v GuardedHost /t REG_DWORD /d 1 /f >nul 2>&1
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\Host-Guardian" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        if "!errorlevel!"=="0" (
            echo Disabling Guarded Host                  %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling Guarded Host                  %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v GuardedHost /f >nul 2>&1
            set "haderror=1"
        )
    )

    set "vbsstate="
    set "rpsfval="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity 2^>nul') do (
        set "vbsstate=%%A"
    )
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v RequirePlatformSecurityFeatures 2^>nul') do (
        set "rpsfval=%%A"
    )
    if "!vbsstate!"=="0x1" (
        echo.
        echo Checking Virtualization-based Security  %cYellow%[Found]%cReset%
        reg add "HKLM\SOFTWARE\ManageVBS" /v VBS /t REG_DWORD /d 1 /f >nul 2>&1
        if defined rpsfval (
            reg add "HKLM\SOFTWARE\ManageVBS" /v RequirePlatformSecurityFeatures /t REG_SZ /d "!rpsfval!" /f >nul 2>&1
            reg delete "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v RequirePlatformSecurityFeatures /f >nul 2>&1
        )
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 0 /f >nul 2>&1
        if "!errorlevel!"=="0" (
            echo Disabling Virtualization-based Security %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling Virtualization-based Security %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v VBS /f >nul 2>&1
            reg delete "HKLM\SOFTWARE\ManageVBS" /v RequirePlatformSecurityFeatures /f >nul 2>&1
            set "haderror=1"
        )
    )

    set "sysguard="
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SystemGuard" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "sysguard=1"
    )
    if defined sysguard (
        echo.
        echo Checking System Guard                   %cYellow%[Found]%cReset%
        reg add "HKLM\SOFTWARE\ManageVBS" /v SystemGuard /t REG_DWORD /d 1 /f >nul
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SystemGuard" /v Enabled /t REG_DWORD /d 0 /f >nul
        if "!errorlevel!"=="0" (
            echo Disabling System Guard                  %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling System Guard                  %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v SystemGuard /f >nul 2>&1
            set "haderror=1"
        )
    )

    set "hvcirunning="
    set "hvciconfig="
    for /f "delims=" %%s in ('%psc% "(Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning" 2^>nul') do (
        if "%%s"=="2" set "hvcirunning=1"
    )
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "hvciconfig=1"
    )
    if defined hvcirunning set "hvci=1"
    if defined hvciconfig set "hvci=1"
    if defined hvci (
        echo.
        echo Checking Memory Integrity ^(HVCI^)        %cYellow%[Found]%cReset%
        reg add "HKLM\SOFTWARE\ManageVBS" /v HVCI /t REG_DWORD /d 1 /f >nul 2>&1
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        if "!errorlevel!"=="0" (
            echo Disabling Memory Integrity ^(HVCI^)       %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling Memory Integrity ^(HVCI^)       %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v HVCI /f >nul 2>&1
            set "haderror=1"
        )
    )

    set "cgrunning="
    set "cgscenario="
    for /f "delims=" %%s in ('%psc% "(Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning" 2^>nul') do (
        if "%%s"=="1" set "cgrunning=1"
    )
    for /f "tokens=3" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled 2^>nul') do (
        if "%%A"=="0x1" set "cgscenario=1"
    )
    if defined cgrunning set "anycg=1"
    if defined cgscenario set "anycg=1"
    if defined anycg (
        echo.
        echo Checking Credential Guard               %cYellow%[Found]%cReset%
        if defined cgrunning (
            reg add "HKLM\SOFTWARE\ManageVBS" /v CredentialGuard /t REG_DWORD /d 1 /f >nul 2>&1
            reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags /t REG_DWORD /d 0 /f >nul 2>&1
            reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v LsaCfgFlags /t REG_DWORD /d 0 /f >nul 2>&1
        )
        if defined cgscenario (
            reg add "HKLM\SOFTWARE\ManageVBS" /v CredentialGuardScenario /t REG_DWORD /d 1 /f >nul 2>&1
            reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled /t REG_DWORD /d 0 /f >nul 2>&1
        )
        if "!errorlevel!"=="0" (
            echo Disabling Credential Guard              %cGreen%[Successful]%cReset%
            set "anythingdisabled=1"
        ) else (
            echo Disabling Credential Guard              %cRedHL%[Failed]%cReset%
            reg delete "HKLM\SOFTWARE\ManageVBS" /v CredentialGuard /f >nul 2>&1
            reg delete "HKLM\SOFTWARE\ManageVBS" /v CredentialGuardScenario /f >nul 2>&1
            set "haderror=1"
        )
    )
)

:: Disables KVA Shadow (Meltdown mitigation) by adding the override keys, as it conflicts with our syscall hook implementation.

:: This is for older Intel CPUs, and in some rare cases older AMD CPUs too, as newer ones are architecturally fixed against Meltdown.

:: This disables the Meltdown protection the same way InSpectre does, https://www.grc.com/inspectre.htm

:dk_kva
set "kvarequired="
set "kvafailed="
for /f "delims=" %%s in ('%psc% "$d=Add-Type -MemberDefinition '[DllImport(\"ntdll.dll\")] public static extern int NtQuerySystemInformation(uint a,IntPtr b,uint c,IntPtr d);' -Name n -Namespace w -PassThru;$p=[Runtime.InteropServices.Marshal]::AllocHGlobal(4);$r=[Runtime.InteropServices.Marshal]::AllocHGlobal(4);$ret=$d::NtQuerySystemInformation(196,$p,4,$r);if($ret -eq 0){$f=[uint32][Runtime.InteropServices.Marshal]::ReadInt32($p);if(($f -band 0x01)-ne 0 -or (($f -band 0x20)-ne 0 -and ($f -band 0x10)-ne 0)){Write-Output 1}else{Write-Output 0}}else{Write-Output 0}" 2^>nul') do (
    if "%%s"=="1" set "kvarequired=1"
)

if not defined kvarequired goto :dk_hypervisor

set "kvaalready="
set "kvaval1="
set "kvaval2="
for /f "tokens=3" %%A in ('reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride 2^>nul') do set "kvaval1=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask 2^>nul') do set "kvaval2=%%A"
if "!kvaval1!"=="0x2" if "!kvaval2!"=="0x3" set "kvaalready=1"

if not defined kvaalready (
    echo.
    echo Checking KVA Shadow                     %cYellow%[Found]%cReset%
    set "kvafailed="
    reg add "HKLM\SOFTWARE\ManageVBS" /v KVAShadow /t REG_DWORD /d 1 /f >nul 2>&1 || set "kvafailed=1"
    reg add "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 2 /f >nul 2>&1 || set "kvafailed=1"
    reg add "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f >nul 2>&1 || set "kvafailed=1"
    if not defined kvafailed (
        echo Disabling KVA Shadow                    %cGreen%[Successful]%cReset%
        set "anythingdisabled=1"
    ) else (
        echo Disabling KVA Shadow                    %cRedHL%[Failed]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v KVAShadow /f >nul 2>&1
        set "haderror=1"
    )
)

:: Disables the Windows Hypervisor using bcdedit /set hypervisorlaunchtype off

:dk_hypervisor
set "hypbcd="
set "hypneeded="
set "hypfailed="
set "hypervfound="
for /f "tokens=2" %%A in ('bcdedit /enum {current} 2^>nul ^| findstr /i "hypervisorlaunchtype"') do set "hypbcd=%%A"

for /f "tokens=1,2,*" %%a in ('dism /online /Get-FeatureInfo /FeatureName:Microsoft-Windows-Subsystem-Linux 2^>nul ^| findstr /i "State"') do (
    if /i "%%c"=="Enabled" set "hypervfound=1"
)
for /f "tokens=1,2,*" %%a in ('dism /online /Get-FeatureInfo /FeatureName:Containers-DisposableClientVM 2^>nul ^| findstr /i "State"') do (
    if /i "%%c"=="Enabled" set "hypervfound=1"
)
for /f "tokens=1,2,*" %%a in ('dism /online /Get-FeatureInfo /FeatureName:Microsoft-Hyper-V-All 2^>nul ^| findstr /i "State"') do (
    if /i "%%c"=="Enabled" set "hypervfound=1"
)
for /f "tokens=1,2,*" %%a in ('dism /online /Get-FeatureInfo /FeatureName:VirtualMachinePlatform 2^>nul ^| findstr /i "State"') do (
    if /i "%%c"=="Enabled" set "hypervfound=1"
)
for /f "tokens=1,2,*" %%a in ('dism /online /Get-FeatureInfo /FeatureName:HypervisorPlatform 2^>nul ^| findstr /i "State"') do (
    if /i "%%c"=="Enabled" set "hypervfound=1"
)

if not defined hypbcd (
    set "hypvbs="
    set "hyphyp="
    for /f "delims=" %%s in ('%psc% "(Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).VirtualizationBasedSecurityStatus" 2^>nul') do (
        if "%%s"=="1" set "hypvbs=1"
        if "%%s"=="2" set "hypvbs=1"
    )
    for /f "delims=" %%s in ('%psc% "(Get-CimInstance Win32_ComputerSystem).HypervisorPresent" 2^>nul') do (
        if /i "%%s"=="True" set "hyphyp=1"
    )
    if defined hypvbs if defined hyphyp set "hypneeded=1"
    if defined hypervfound if defined hyphyp set "hypneeded=1"
) else (
    if /i "!hypbcd!"=="Auto" set "hypneeded=1"
    if /i "!hypbcd!"=="On" set "hypneeded=1"
)

if defined hypneeded (
    echo.
    echo Checking Windows Hypervisor             %cYellow%[Found]%cReset%
    reg add "HKLM\SOFTWARE\ManageVBS" /v Hypervisor /t REG_DWORD /d 1 /f >nul 2>&1 || set "hypfailed=1"
    if defined hypbcd (
        reg add "HKLM\SOFTWARE\ManageVBS" /v HypervisorLaunchType /t REG_SZ /d "!hypbcd!" /f >nul 2>&1
    )
    bcdedit /set hypervisorlaunchtype off >nul 2>&1 || set "hypfailed=1"
    if not defined hypfailed (
        echo Disabling Windows Hypervisor            %cGreen%[Successful]%cReset%
        set "anythingdisabled=1"
    ) else (
        echo Disabling Windows Hypervisor            %cRed%[Failed]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v Hypervisor /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\ManageVBS" /v HypervisorLaunchType /f >nul 2>&1
        set "haderror=1"
    )
)

set "vsmbcd="
set "vsmfailed="
for /f "tokens=2" %%A in ('bcdedit /enum {current} 2^>nul ^| findstr /i "vsmlaunchtype"') do set "vsmbcd=%%A"

if /i "!vsmbcd!"=="Auto" (
    echo.
    echo Checking Virtual Secure Mode            %cYellow%[Found]%cReset%
    reg add "HKLM\SOFTWARE\ManageVBS" /v VsmLaunchType /t REG_SZ /d "Auto" /f >nul 2>&1 || set "vsmfailed=1"
    bcdedit /set vsmlaunchtype Off >nul 2>&1 || set "vsmfailed=1"
    if not defined vsmfailed (
        echo Disabling Virtual Secure Mode           %cGreen%[Successful]%cReset%
        set "anythingdisabled=1"
    ) else (
        echo Disabling Virtual Secure Mode           %cRed%[Failed]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v VsmLaunchType /f >nul 2>&1
        set "haderror=1"
    )
)

:: Notifies the user if Smart App Control is enabled or in evaluation mode.

set "sacstate="
if !winbuild! GEQ 22621 (
    for /f "tokens=3" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy" /v VerifiedAndReputablePolicyState 2^>nul') do (
        set "sacstate=%%a"
    )
)

if defined sacstate (
    if "!sacstate!"=="0x1" (
        echo.
        echo Checking Smart App Control              %cYellow%[Enabled]%cReset%
        echo.
        echo %cGreyHL%Smart App Control may block certain applications.%cReset%
        echo %cGreyHL%You may need to disable it in Windows Security.%cReset%
    )
    if "!sacstate!"=="0x2" (
        echo.
        echo Checking Smart App Control              %cYellow%[Evaluation]%cReset%
        echo.
        echo %cGreyHL%Smart App Control may enable itself after evaluation.%cReset%
        echo %cGreyHL%It is recommended to disable it in Windows Security.%cReset%
    )
)

if "!haderror!"=="1" (
    echo.
    echo %cRedHL%Some errors were detected.%cReset%
    echo.
    echo %cRedHL%Run the "Revert Changes" option to restore the previous state.%cReset%
    echo.
    echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
    echo.
    echo %cYellow%Press any key to exit...%cReset%
    pause >nul
    exit /b
)

if not defined anythingdisabled (
    if "!dse!"=="0" (
        echo.
        echo %cYellow%All required security features, including driver signature enforcement, are already disabled.%cReset%
        echo.
        echo %cYellow%Press any key to exit...%cReset%
        pause >nul
        exit /b
    ) else if "!dse!"=="1" (
        echo.
        echo %cYellow%All required security features are already disabled, with Test Signing already enabled.%cReset%
        echo.
        echo %cYellow%Press any key to exit...%cReset%
        pause >nul
        exit /b
    ) else if "!dse!"=="2" (
        echo.
        echo %cYellow%All required security features are already disabled. No changes were made.%cReset%
        echo.
        echo %cYellow%You will still be taken to Startup Settings to disable driver signature enforcement.%cReset%
    )
)

:: Suspends BitLocker, if enabled, for one reboot to avoid BitLocker recovery when booting into Startup Settings.

if "!cgrunning!"=="1" if !winbuild! LEQ 19045 if not "!dse!"=="1" goto :cg_reboot

if not "!dse!"=="1" (
    call :dk_bitlocker
    if "!blprotected!"=="1" (
        manage-bde -protectors -disable %SystemDrive% -rebootcount 1 >nul 2>&1
        if "!errorlevel!"=="0" (
            echo(________________________________________________________________________
            echo.
            echo %cBlueHL%BitLocker was detected on this system.%cReset%
            echo.
            echo %cBlueHL%To allow access to Startup Settings without requiring the recovery key, BitLocker protection has been temporarily%cReset%
            echo %cBlueHL%suspended for one reboot. Encryption is still active.%cReset%
        ) else (
            echo.
            echo %cRedHL%Failed to suspend BitLocker. Aborting.%cReset%
            echo.
            echo %cRedHL%Run the "Revert Changes" option to restore the previous state.%cReset%
            echo.
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
    )
)

echo(________________________________________________________________________
echo.
echo %cBlueHL%A restart is required to apply changes.%cReset%
if not "!dse!"=="1" (
    echo.
    echo %cBlueHL%When booting, you will need to disable driver signature enforcement by pressing F7 within the Startup Settings.%cReset%
)
echo(________________________________________________________________________
if not "!dse!"=="1" bcdedit /set !bootid! onetimeadvancedoptions on >nul
echo.
choice /C:12 /N /M "[1] Restart Now [2] Restart Later:
if !errorlevel!==1 shutdown /r /t 0
exit /b

:cg_reboot

:: Suspends BitLocker, if enabled, for two reboots to avoid recovery when booting into Startup Settings.

if not "!dse!"=="1" (
    call :dk_bitlocker
    if "!blprotected!"=="1" (
        manage-bde -protectors -disable %SystemDrive% -rebootcount 2 >nul 2>&1
        if "!errorlevel!"=="0" (
            echo(________________________________________________________________________
            echo.
            echo %cBlueHL%BitLocker was detected on this system.%cReset%
            echo.
            echo %cBlueHL%To allow access to Startup Settings without requiring the recovery key, BitLocker protection has been temporarily%cReset%
            echo %cBlueHL%suspended for two reboots. Encryption is still active.%cReset%
        ) else (
            echo.
            echo %cRedHL%Failed to suspend BitLocker. Aborting.%cReset%
            echo.
            echo %cRedHL%Run the "Revert Changes" option to restore the previous state.%cReset%
            echo.
            echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
            echo.
            echo %cYellow%Press any key to exit...%cReset%
            pause >nul
            exit /b
        )
    )
)

echo(________________________________________________________________________
echo.
echo %cBlueHL%If Credential Guard is active on Windows 10, two system restarts are required to completely disable VBS.%cReset%
if not "!dse!"=="1" (
    echo.
    echo %cBlueHL%On the second boot, you will need to disable driver signature enforcement by pressing F7 within the Startup Settings.%cReset%
)
echo(________________________________________________________________________
if not "!dse!"=="1" (
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "VBSAdvancedOptions" /t REG_SZ /d "bcdedit /set !bootid! onetimeadvancedoptions on" /f >nul
)
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "VBSSecondReboot" /t REG_SZ /d "shutdown /r /t 0" /f >nul
echo.
choice /C:12 /N /M "[1] Restart Now [2] Restart Later:
if !errorlevel!==1 shutdown /r /t 0
exit /b

:: This section reverts the changes made by the primary part of the script. Only the security features that were previously disabled are re-enabled. Since not all hardware or Windows editions support the same silicon assisted security features, the script records any disabled features under HKLM\SOFTWARE\ManageVBS so it can restore only those settings. This is done because Windows does not always safely ignore unsupported registry keys.

:dk_revert

cls

set "haderror=0"

echo.
echo Checking OS Info                        [!winos! ^| !fullbuild! ^| !osarch!]
echo Reverting changes...

set "dse="
for /f "delims=" %%A in ('%psc% "$t=Add-Type -PassThru -MemberDefinition '[DllImport(\"ntdll.dll\")] public static extern uint NtQuerySystemInformation(int c,IntPtr b,uint s,out uint r);' -Name CI2 -Namespace w2; $p=[Runtime.InteropServices.Marshal]::AllocHGlobal(8); [Runtime.InteropServices.Marshal]::WriteInt32($p,8); $r=[uint32]0; $t::NtQuerySystemInformation(103,$p,8,[ref]$r)|Out-Null; $o=[uint32][Runtime.InteropServices.Marshal]::ReadInt32($p,4); if(-not($o -band 1)){0}elseif($o -band 2){1}else{2}" 2^>nul') do set "dse=%%A"
if "!dse!"=="0" (
    echo.
    echo Checking Driver Signature Enforcement   %cYellow%[Disabled]%cReset%
)

set "mvbs_hasvalues=0"
for /f %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" 2^>nul ^| findstr /i "REG_" ^| findstr /vi "UEFILockAgreed"') do set "mvbs_hasvalues=1"
if "!mvbs_hasvalues!"=="0" if not "!dse!"=="0" (
    echo.
    echo %cYellow%Nothing to revert, as no changes were previously applied.%cReset%
    echo.
    echo %cYellow%Press any key to exit...%cReset%
    pause >nul
    exit /b
)

set "revert_faceit="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v FACEIT 2^>nul') do set "revert_faceit=%%A"
if "!revert_faceit!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Services\FACEIT" /v Start /t REG_DWORD /d 1 /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Services\FACEITService" /v Start /t REG_DWORD /d 3 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling FACEIT Anti-Cheat              %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v FACEIT /f >nul 2>&1
    ) else (
        echo.
        echo Enabling FACEIT Anti-Cheat              %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_vbslocked="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v VBSLocked 2^>nul') do set "revert_vbslocked=%%A"
if "!revert_vbslocked!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v Locked /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling VBS UEFI Lock                  %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v VBSLocked /f >nul 2>&1
    ) else (
        echo.
        echo Enabling VBS UEFI Lock                  %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_hvcilocked="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v HVCILocked 2^>nul') do set "revert_hvcilocked=%%A"
if "!revert_hvcilocked!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Locked /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling HVCI UEFI Lock                 %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v HVCILocked /f >nul 2>&1
    ) else (
        echo.
        echo Enabling HVCI UEFI Lock                 %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_cglocked="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v CGLocked 2^>nul') do set "revert_cglocked=%%A"
if "!revert_cglocked!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 1 /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v RequirePlatformSecurityFeatures /t REG_DWORD /d 3 /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags /t REG_DWORD /d 1 /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Credential Guard UEFI Lock     %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v CGLocked /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Credential Guard UEFI Lock     %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: Restores the Windows Hypervisor launch type to its original state via boot configuration.

:: If it was explicitly set before, it is restored to that value. If it was not set, the entry is deleted to return to the default state.

set "revert_hyp="
set "revert_hyptype="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v Hypervisor 2^>nul') do set "revert_hyp=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v HypervisorLaunchType 2^>nul') do set "revert_hyptype=%%A"
if "!revert_hyp!"=="0x1" (
    if "!revert_hyptype!"=="" (
        bcdedit /deletevalue !bootid! hypervisorlaunchtype >nul 2>&1
        cmd /c exit 0
    ) else (
        bcdedit /set hypervisorlaunchtype !revert_hyptype! >nul 2>&1
    )
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Windows Hypervisor             %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v Hypervisor /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\ManageVBS" /v HypervisorLaunchType /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Windows Hypervisor             %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_vsm="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v VsmLaunchType 2^>nul') do set "revert_vsm=%%A"
if not "!revert_vsm!"=="" (
    bcdedit /set vsmlaunchtype Auto >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Virtual Secure Mode            %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v VsmLaunchType /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Virtual Secure Mode            %cRed%[Failed]%cReset%
        set "haderror=1"
    )
)

:: This is the official, documented method to enable Virtualization-based Security (VBS), as described by Microsoft under "To enable VBS only (no memory integrity):" at https://learn.microsoft.com/en-us/windows/security/hardware-security/enable-virtualization-based-protection-of-code-integrity?tabs=reg#enable-memory-integrity-using-registry

set "revert_vbs="
set "revert_rpsf="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v VBS 2^>nul') do set "revert_vbs=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v RequirePlatformSecurityFeatures 2^>nul') do set "revert_rpsf=%%A"
if "!revert_vbs!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 1 /f >nul 2>&1
    if defined revert_rpsf reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v RequirePlatformSecurityFeatures /t REG_DWORD /d !revert_rpsf! /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Virtualization-based Security  %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v VBS /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\ManageVBS" /v RequirePlatformSecurityFeatures /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Virtualization-based Security  %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: This is the official, documented method to enable memory integrity, as described by Microsoft under "To enable memory integrity:" at https://learn.microsoft.com/en-us/windows/security/hardware-security/enable-virtualization-based-protection-of-code-integrity?tabs=reg#enable-memory-integrity-using-registry

set "revert_hvci="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v HVCI 2^>nul') do set "revert_hvci=%%A"
if "!revert_hvci!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v WasEnabledBy /t REG_DWORD /d 2 /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Memory Integrity ^(HVCI^)        %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v HVCI /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Memory Integrity ^(HVCI^)        %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: As mentioned before, Windows Hello, if enabled while Virtualization-based Security, Credential Guard, Device Guard, or any other silicon assisted security features are enabled and running, will remain protected. Disabling this protection while Windows Hello is active will result in a "Something happened and your PIN isn't available. Click to set up your PIN again." message on the next login, in the case of a PIN. A slightly different, but similar message also appears for fingerprint and facial recognition.

:: This does not re-enable Windows Hello itself, rather just its Device Guard registry key.

set "revert_wh="
set "revert_pwdless="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v WindowsHello 2^>nul') do set "revert_wh=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v PasswordLessBuildVersion 2^>nul') do set "revert_pwdless=%%A"
if "!revert_wh!"=="0x1" (
    if "!revert_pwdless!"=="" (
        reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion /f >nul 2>&1
    ) else (
        reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion /t REG_DWORD /d !revert_pwdless! /f >nul 2>&1
    )
    reg delete "HKLM\SOFTWARE\ManageVBS" /v PasswordLessBuildVersion /f >nul 2>&1
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\WindowsHello" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Windows Hello Protection       %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v WindowsHello /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Windows Hello Protection       %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_sb="
set "revert_sbscenario="
set "revert_sbwhs="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v SecureBiometrics 2^>nul') do set "revert_sb=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsScenario 2^>nul') do set "revert_sbscenario=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsWHS 2^>nul') do set "revert_sbwhs=%%A"
if "!revert_sb!"=="0x1" set "anyrevert_sb=1"
if "!revert_sbscenario!"=="0x1" set "anyrevert_sb=1"
if "!revert_sbwhs!"=="0x1" set "anyrevert_sb=1"
if defined anyrevert_sb (
    if "!revert_sb!"=="0x1" (
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SecureBiometrics" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    )
    if "!revert_sbscenario!"=="0x1" (
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios" /v SecureBiometrics /t REG_DWORD /d 1 /f >nul 2>&1
    )
    if "!revert_sbwhs!"=="0x1" (
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\WindowsHelloSecureBiometrics" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    )
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Enhanced Sign-in Security      %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v SecureBiometrics /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsScenario /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\ManageVBS" /v SecureBiometricsWHS /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Enhanced Sign-in Security      %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_hg="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v HyperGuard 2^>nul') do set "revert_hg=%%A"
if "!revert_hg!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HyperGuard" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling HyperGuard                     %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v HyperGuard /f >nul 2>&1
    ) else (
        echo.
        echo Enabling HyperGuard                     %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

set "revert_gh="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v GuardedHost 2^>nul') do set "revert_gh=%%A"
if "!revert_gh!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\Host-Guardian" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Guarded Host                   %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v GuardedHost /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Guarded Host                   %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: System Guard Secure Launch is another of Microsoft's silicon assisted security features. This is the official, documented method to enable System Guard Secure Launch, as described by Microsoft at https://learn.microsoft.com/en-us/windows/security/hardware-security/system-guard-secure-launch-and-smm-protection#registry

set "revert_sg="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v SystemGuard 2^>nul') do set "revert_sg=%%A"
if "!revert_sg!"=="0x1" (
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SystemGuard" /v Enabled /t REG_DWORD /d 1 /f >nul
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling System Guard                   %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v SystemGuard /f >nul 2>&1
    ) else (
        echo.
        echo Enabling System Guard                   %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: Enables Credential Guard without lock 

:: Starting in Windows 11, 22H2 and Windows Server 2025, VBS and Credential Guard are enabled by default on devices that meet the requirements. The default enablement is without UEFI Lock, which is the same enablement used in this script. You can learn more about this at https://learn.microsoft.com/en-us/windows/security/identity-protection/credential-guard/#default-enablement

:: This is the official, documented way Microsoft has demonstrated. See "Configure Credential Guard with registry settings" at https://learn.microsoft.com/en-us/windows/security/identity-protection/credential-guard/configure?tabs=reg#configure-credential-guard-with-registry-settings

set "revert_cg="
set "revert_cgscenario="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v CredentialGuard 2^>nul') do set "revert_cg=%%A"
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v CredentialGuardScenario 2^>nul') do set "revert_cgscenario=%%A"
if "!revert_cg!"=="0x1" set "anyrevert_cg=1"
if "!revert_cgscenario!"=="0x1" set "anyrevert_cg=1"
if defined anyrevert_cg (
    if "!revert_cg!"=="0x1" (
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags /t REG_DWORD /d 2 /f >nul 2>&1
        reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v LsaCfgFlags >nul 2>&1
        if "!errorlevel!"=="0" reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v LsaCfgFlags /f >nul 2>&1
    )
    if "!revert_cgscenario!"=="0x1" (
        reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled /t REG_DWORD /d 1 /f >nul 2>&1
    )
    if "!errorlevel!"=="0" (
        echo.
        echo Enabling Credential Guard               %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v CredentialGuard /f >nul 2>&1
        reg delete "HKLM\SOFTWARE\ManageVBS" /v CredentialGuardScenario /f >nul 2>&1
    ) else (
        echo.
        echo Enabling Credential Guard               %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: Restores KVA Shadow (Meltdown mitigation) by removing the override keys

:: You can learn more about how KVA Shadow mitigates Meltdown at https://www.microsoft.com/en-us/msrc/blog/2018/03/kva-shadow-mitigating-meltdown-on-windows

set "revert_kva="
for /f "tokens=3" %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" /v KVAShadow 2^>nul') do set "revert_kva=%%A"
if "!revert_kva!"=="0x1" (
    set "kva1=0"
    set "kva2=0"
    reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride >nul 2>&1
    if "!errorlevel!"=="0" (
        reg delete "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /f >nul 2>&1
        if "!errorlevel!"=="0" set "kva1=1"
    ) else (
        set "kva1=1"
    )
    reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask >nul 2>&1
    if "!errorlevel!"=="0" (
        reg delete "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /f >nul 2>&1
        if "!errorlevel!"=="0" set "kva2=1"
    ) else (
        set "kva2=1"
    )
    if "!kva1!"=="1" if "!kva2!"=="1" (
        echo.
        echo Enabling KVA Shadow                     %cGreen%[Successful]%cReset%
        reg delete "HKLM\SOFTWARE\ManageVBS" /v KVAShadow /f >nul 2>&1
    ) else (
        echo.
        echo Enabling KVA Shadow                     %cRedHL%[Failed]%cReset%
        set "haderror=1"
    )
)

:: Removes the ManageVBS tracking key if all features were successfully re-enabled. If any failed, the key is kept so the user can run Revert Changes again.

set "mvbs_remaining=0"
for /f %%A in ('reg query "HKLM\SOFTWARE\ManageVBS" 2^>nul ^| findstr /i "REG_" ^| findstr /vi "UEFILockAgreed"') do set "mvbs_remaining=1"
if "!mvbs_remaining!"=="0" reg delete "HKLM\SOFTWARE\ManageVBS" /f >nul 2>&1

if "!haderror!"=="1" (
    echo.
    echo %cRedHL%Some errors were detected.%cReset%
    echo.
    echo %cBlueHL%Check this webpage for help - %cReset% %cYellow%https://cs.rin.ru/forum/viewtopic.php?f=14^&t=156435%cReset%
)
echo(________________________________________________________________________
echo.
echo %cBlueHL%A restart is required to apply changes.%cReset%
echo(________________________________________________________________________
echo.
choice /C:12 /N /M "[1] Restart Now [2] Restart Later: 
if !errorlevel!==1 shutdown /r /t 0
exit /b

:: Checks if BitLocker protection is enabled on the OS drive.

:dk_bitlocker

set "blprotected=0"
for /f "delims=" %%s in ('%psc% "(Get-BitLockerVolume -MountPoint $env:SystemDrive).ProtectionStatus" 2^>nul') do (
    if "%%s"=="On" set "blprotected=1"
)
exit /b

:: Show OS info.

:dk_sysinfo

set winbuild=1
for /f "tokens=2 delims=[]" %%G in ('ver') do (
    for /f "tokens=2,3,4 delims=. " %%H in ("%%~G") do (
        set "winbuild=%%J"
    )
)

call :dk_reflection

set d1=!ref! $meth = $TypeBuilder.DefinePInvokeMethod('BrandingFormatString', 'winbrand.dll', 'Public, Static', 1, [String], @([String]), 1, 3);
set d1=!d1! $meth.SetImplementationFlags(128); $TypeBuilder.CreateType()::BrandingFormatString('%%WINDOWS_LONG%%') -replace [string][char]0xa9, '' -replace [string][char]0xae, '' -replace [string][char]0x2122, ''

set winos=
for /f "delims=" %%s in ('"%psc% %d1%"') do if not errorlevel 1 set "winos=%%s"
echo "!winos!" | find /i "Windows" >nul 2>&1 || (
    for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "winos=%%b"
    if !winbuild! GEQ 22000 set "winos=!winos:Windows 10=Windows 11!"
)

set "osarch="
for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE 2^>nul') do set "osarch=%%b"

set "fullbuild="
for /f "tokens=6-7 delims=[]. " %%i in ('ver') do if not "%%j"=="" (
    set "fullbuild=%%i.%%j"
) else (
    set "UBR="
    for /f "tokens=3" %%G in ('"reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR" 2^>nul') do if not errorlevel 1 set /a "UBR=%%G"
    for /f "skip=2 tokens=3,4 delims=. " %%G in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx 2^>nul') do (
        if defined UBR (set "fullbuild=%%G.!UBR!") else (set "fullbuild=%%G.%%H")
    )
)
exit /b

:: This is used to build the PowerShell reflection code that calls BrandingFormatString from winbrand.dll to get the Windows product name, which is turn populates !winos! for the Checking OS Info line.

:dk_reflection
set ref=$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1);
set ref=%ref% $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False);
set ref=%ref% $TypeBuilder = $ModuleBuilder.DefineType(0);
exit /b

:dk_checkwmic

if !winbuild! LSS 9200 (set "_wmic=1" & exit /b)
set "_wmic=0"
for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" (
    cmd /c "wmic path Win32_ComputerSystem get CreationClassName /value" 2>nul | find /i "computersystem" >nul 2>&1 && set "_wmic=1"
)
exit /b

:dk_troubleshoot

cls

echo.
choice /C:12 /N /M "[1] Fix WMI [2] Back: "
if !errorlevel!==2 goto :title
goto :fixwmi

:fixwmi

cls

if exist "%SystemRoot%\Servicing\Packages\Microsoft-Windows-Server*Edition~*.mum" (
    echo.
    echo Rebuilding WMI is not recommended on Windows Server, aborting...
    goto :at_back
)

echo.
echo Checking WMI
call :checkwmi

if defined error (
    %psc% Stop-Service Winmgmt -force >nul 2>&1
    winmgmt /salvagerepository >nul 2>&1
    call :checkwmi
)

if not defined error (
    echo %cGreen%[Working]%cReset%
    echo.
    echo %cYellow%No need to apply this option.%cReset%
    goto :at_back
)

echo %cRedHL%[Not Responding]%cReset%

set "_corrupt="
sc start Winmgmt >nul 2>&1
if !errorlevel! EQU 1060 set "_corrupt=1"
sc query Winmgmt >nul 2>&1 || set "_corrupt=1"
for %%G in (DependOnService Description DisplayName ErrorControl ImagePath ObjectName Start Type) do if not defined _corrupt (reg query HKLM\SYSTEM\CurrentControlSet\Services\Winmgmt /v %%G >nul 2>&1 || set "_corrupt=1")

echo.
if defined _corrupt (
    echo %cRedHL%Winmgmt service is corrupted, aborting...%cReset%
    goto :at_back
)

echo Disabling Winmgmt service
sc config Winmgmt start= disabled >nul 2>&1
if !errorlevel! EQU 0 (
    echo %cGreen%[Successful]%cReset%
) else (
    echo %cRedHL%[Failed]%cReset%
    sc config Winmgmt start= auto >nul 2>&1
    echo %cRedHL%Aborting...%cReset%
    goto :at_back
)

echo.
echo Stopping Winmgmt service
%psc% Stop-Service Winmgmt -force >nul 2>&1
%psc% Stop-Service Winmgmt -force >nul 2>&1
%psc% Stop-Service Winmgmt -force >nul 2>&1
sc query Winmgmt | find /i "STOPPED" >nul 2>&1 && (
    echo %cGreen%[Successful]%cReset%
) || (
    echo %cRedHL%[Failed]%cReset%
    echo %cBlueHL%It is recommended to restart and run Fix WMI again.%cReset%
    echo.
    choice /C:12 /N /M "[1] Restart [2] Go Back:
    if !errorlevel!==1 (sc config Winmgmt start= auto >nul 2>&1 & goto :dk_troubleshoot)
    echo.
    echo Restarting...
    shutdown -t 5 -r
    exit
)

echo.
echo Deleting WMI repository
rmdir /s /q "%SysPath%\wbem\repository\" >nul 2>&1
if exist "%SysPath%\wbem\repository\" (
    echo %cRedHL%[Failed]%cReset%
) else (
    echo %cGreen%[Successful]%cReset%
)

echo.
echo Enabling Winmgmt service
sc config Winmgmt start= auto >nul 2>&1
if !errorlevel! EQU 0 (
    echo %cGreen%[Successful]%cReset%
) else (
    echo %cRedHL%[Failed]%cReset%
)

call :checkwmi
if not defined error (
    echo.
    echo Checking WMI
    echo %cGreen%[Working]%cReset%
    goto :at_back
)

echo.
echo Registering .dll's and Compiling .mof's, .mfl's
call :registerobj >nul 2>&1

echo.
echo Checking WMI
call :checkwmi
if defined error (
    echo %cRedHL%[Not Responding]%cReset%
    echo.
    echo Run SFC /scannow and DISM /Online /Cleanup-Image /RestoreHealth and try again.
) else (
    echo %cGreen%[Working]%cReset%
)

goto :at_back

:registerobj

%psc% Stop-Service Winmgmt -force %nul%
cd /d %SysPath%\wbem\
regsvr32 /s %SysPath%\scecli.dll
regsvr32 /s %SysPath%\userenv.dll
mofcomp cimwin32.mof
mofcomp cimwin32.mfl
mofcomp rsop.mof
mofcomp rsop.mfl
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s

winmgmt /salvagerepository
winmgmt /resetrepository
exit /b

:checkwmi

set "error="
%psc% "Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" 2>nul | find /i "computersystem" >nul 2>&1
if !errorlevel! NEQ 0 (set "error=1" & exit /b)
winmgmt /verifyrepository >nul 2>&1
if !errorlevel! NEQ 0 (set "error=1" & exit /b)
%psc% "try { $null=([WMISEARCHER]'SELECT * FROM SoftwareLicensingService').Get().Version; exit 0 } catch { exit $_.Exception.InnerException.HResult }" >nul 2>&1
cmd /c exit /b !errorlevel!
echo "0x%=ExitCode%" | findstr /i "0x800410 0x800440 0x80131501" >nul 2>&1
if !errorlevel! EQU 0 set "error=1"
exit /b

:at_back

echo.
echo %cYellow%Press any key to go back...%cReset%
pause >nul
goto :dk_troubleshoot
 

Долго боролся с подобной проблемой, случайно зацепился за 1 файлик в рунете. 
Хотел поиграть в игру новую(crimson desert), а там надо было подобные вещи отключать. скачал архив c стороннего ресурса. Там был батник, прогнал его через ИИ, вроде все ок. юзнул, перезагрузился, выбрал отключение цифровой подписи драйверов(так было в инструкции кряка) потом настроил заново пароль и Lineage 2 заработала. 
Содержимое батника скинул, может кому поможет.
создаем текстовый фаил, вставляем туда этот код, сохраняем, переименовываем название.txt на название.bat запускаем, [там в командной строке будет выбор (1;2;3)1- внести изменения, а потом после, что-бы вернуть все в изначальное состояние надо будет нажать опцию с revert changes]  проходим перезагрузку будет голубой экран, с кучей настроек(у меня была 7, отключение цифровой подписи драйверов, что-то в этом роде.) Windows hello будет ругаться на пин код, мол устройство не в сети. я ввел пароль от своего аккаунта майкрософт и все было ок.
после запускаете игру.

Делюсь с инфой, но не знаю что может случиться с вашим компом. так что делаете это на свой страх и риск.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...