diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c index 84a9fd04..5242cb03 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy.c @@ -337,7 +337,8 @@ int ventoy_global_var_init(void) static ctrl_var_cfg g_ctrl_vars[] = { - { "VTOY_WIN11_BYPASS_CHECK", 0 }, + { "VTOY_WIN11_BYPASS_CHECK", 1 }, + { "VTOY_WIN11_BYPASS_NRO", 1 }, { "VTOY_LINUX_REMOUNT", 0 }, { "VTOY_SECONDARY_BOOT_MENU", 1 }, { NULL, 0 } diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c index 9bddab14..11d411c8 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c @@ -1090,6 +1090,12 @@ static int ventoy_fill_windows_rtdata(void *buf, char *isopath, int dataflag) { data->windows11_bypass_check = 1; } + + env = grub_env_get("VTOY_WIN11_BYPASS_NRO"); + if (env && env[0] == '1' && env[1] == 0) + { + data->windows11_bypass_nro = 1; + } pos = grub_strstr(isopath, "/"); if (!pos) diff --git a/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h b/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h index be992ce7..129a2890 100644 --- a/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h +++ b/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h @@ -142,7 +142,9 @@ typedef struct ventoy_windows_data grub_uint32_t auto_install_len; - grub_uint8_t reserved[255 - 4]; + grub_uint8_t windows11_bypass_nro; + + grub_uint8_t reserved[255 - 5]; /* auto_intall file buf */ /* ...... + auto_install_len */ diff --git a/INSTALL/grub/debug.cfg b/INSTALL/grub/debug.cfg index 1bf076d7..94394968 100644 --- a/INSTALL/grub/debug.cfg +++ b/INSTALL/grub/debug.cfg @@ -1,5 +1,5 @@ # -# VTLANG_TEMP_SETTING must be the first +# VTLANG_CTRL_TEMP_SET must be the first # And the inside item order can not be changed # submenu "$VTLANG_CTRL_TEMP_SET" --class=debug_temp_set --class=F5tool { @@ -12,8 +12,17 @@ submenu "$VTLANG_CTRL_TEMP_SET" --class=debug_temp_set --class=F5tool { fi } - menuentry "[ $VTOY_LINUX_REMOUNT ] $VTLANG_LINUX_REMOUNT" --class=debug_temp_linux_remount --class=debug_temp_set --class=F5tool \ + menuentry "[ $VTOY_WIN11_BYPASS_NRO ] $VTLANG_WIN11_BYPASS_NRO" --class=debug_temp_win11_nro --class=debug_temp_set --class=F5tool \ VTOY_RUN_SET1 { + if [ "$VTOY_WIN11_BYPASS_NRO" = "0" ]; then + set VTOY_WIN11_BYPASS_NRO=1 + else + set VTOY_WIN11_BYPASS_NRO=0 + fi + } + + menuentry "[ $VTOY_LINUX_REMOUNT ] $VTLANG_LINUX_REMOUNT" --class=debug_temp_linux_remount --class=debug_temp_set --class=F5tool \ + VTOY_RUN_SET2 { if [ "$VTOY_LINUX_REMOUNT" = "0" ]; then set VTOY_LINUX_REMOUNT=1 else @@ -22,7 +31,7 @@ submenu "$VTLANG_CTRL_TEMP_SET" --class=debug_temp_set --class=F5tool { } menuentry "[ $VTOY_SECONDARY_BOOT_MENU ] $VTLANG_SECONDARY_BOOT_MENU" --class=debug_temp_second_menu --class=debug_temp_set --class=F5tool \ - VTOY_RUN_SET2 { + VTOY_RUN_SET3 { if [ "$VTOY_SECONDARY_BOOT_MENU" = "0" ]; then set VTOY_SECONDARY_BOOT_MENU=1 else diff --git a/INSTALL/grub/menu/ar_AR.json b/INSTALL/grub/menu/ar_AR.json index d2ef6447..151a705b 100644 --- a/INSTALL/grub/menu/ar_AR.json +++ b/INSTALL/grub/menu/ar_AR.json @@ -69,7 +69,8 @@ "VTLANG_ENTER_CONTINUE": "اضغط على مفتاح Enter للمتابعة", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/bn_BN.json b/INSTALL/grub/menu/bn_BN.json index 29e368cb..516438b0 100644 --- a/INSTALL/grub/menu/bn_BN.json +++ b/INSTALL/grub/menu/bn_BN.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "চালিয়ে যেতে এন্টার কী টিপুন", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/de_DE.json b/INSTALL/grub/menu/de_DE.json index 6b246f21..18288f8b 100644 --- a/INSTALL/grub/menu/de_DE.json +++ b/INSTALL/grub/menu/de_DE.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "Drücken Sie die Eingabetaste, um fortzufahren", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/en_US.json b/INSTALL/grub/menu/en_US.json index 5fd6ce81..31d5cffc 100644 --- a/INSTALL/grub/menu/en_US.json +++ b/INSTALL/grub/menu/en_US.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "press Enter key to continue", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/fr_FR.json b/INSTALL/grub/menu/fr_FR.json index 2bcfbb69..65ee3e81 100644 --- a/INSTALL/grub/menu/fr_FR.json +++ b/INSTALL/grub/menu/fr_FR.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "appuyez sur la touche Entrée pour continuer", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/hi_HI.json b/INSTALL/grub/menu/hi_HI.json index 2b36dd3d..cf2d6f53 100644 --- a/INSTALL/grub/menu/hi_HI.json +++ b/INSTALL/grub/menu/hi_HI.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "जारी रखने के लिए एंटर कुंजी दबाएं", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/hr_HR.json b/INSTALL/grub/menu/hr_HR.json index a494cfe4..0dd0ee1f 100644 --- a/INSTALL/grub/menu/hr_HR.json +++ b/INSTALL/grub/menu/hr_HR.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "pritisnite tipku Enter za nastavak", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/hu_HU.json b/INSTALL/grub/menu/hu_HU.json index 542d111d..f35a9eb8 100644 --- a/INSTALL/grub/menu/hu_HU.json +++ b/INSTALL/grub/menu/hu_HU.json @@ -1,4 +1,4 @@ -{ + "VTLANG_LANGUAGE_NAME": "Hungarian (Magyar)", "VTLANG_STR_HOTKEY_LIST": "L:Nyelv F1:Súgó F2:Tallóz F3:Listanézet F4:Helyi indítás F5:Eszközök F6:Bővített menü", @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "a folytatáshoz nyomja meg az Enter billentyűt", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/id_ID.json b/INSTALL/grub/menu/id_ID.json index cf487c29..834eb3c3 100644 --- a/INSTALL/grub/menu/id_ID.json +++ b/INSTALL/grub/menu/id_ID.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "tekan tombol Enter untuk melanjutkan", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/ja_JP.json b/INSTALL/grub/menu/ja_JP.json index e64df430..aadca858 100644 --- a/INSTALL/grub/menu/ja_JP.json +++ b/INSTALL/grub/menu/ja_JP.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "[Enter]を押して続行します", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/ka_GE.json b/INSTALL/grub/menu/ka_GE.json index 98b5c4e9..670f39b3 100644 --- a/INSTALL/grub/menu/ka_GE.json +++ b/INSTALL/grub/menu/ka_GE.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "გასაგრძელებლად დააჭირეთ Enter ღილაკს", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/ko_KR.json b/INSTALL/grub/menu/ko_KR.json index 253b37bf..aa959d54 100644 --- a/INSTALL/grub/menu/ko_KR.json +++ b/INSTALL/grub/menu/ko_KR.json @@ -84,6 +84,7 @@ "VTLANG_CTRL_TEMP_SET": "임시 제어 설정", "VTLANG_WIN11_BYPASS_CHECK": "Windows 11을 설치할 때 우회 점검", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Linux 부트 후 Ventoy 파티션 마운트", "VTLANG_SECONDARY_BOOT_MENU": "보조 부트 메뉴 표시", diff --git a/INSTALL/grub/menu/pl_PL.json b/INSTALL/grub/menu/pl_PL.json index 49c95b12..7d44fda9 100644 --- a/INSTALL/grub/menu/pl_PL.json +++ b/INSTALL/grub/menu/pl_PL.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "naciśnij klawisz Enter, aby kontynuować", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/pt_PT.json b/INSTALL/grub/menu/pt_PT.json index 36cc3558..c6f597cb 100644 --- a/INSTALL/grub/menu/pt_PT.json +++ b/INSTALL/grub/menu/pt_PT.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "pressione a tecla Enter para continuar", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/ru_RU.json b/INSTALL/grub/menu/ru_RU.json index a2333b16..b4bdfec8 100644 --- a/INSTALL/grub/menu/ru_RU.json +++ b/INSTALL/grub/menu/ru_RU.json @@ -84,6 +84,7 @@ "VTLANG_CTRL_TEMP_SET": "Настройки временного управления", "VTLANG_WIN11_BYPASS_CHECK": "Обойти проверку при установке Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Смонтировать раздел Ventoy после загрузки Linux", "VTLANG_SECONDARY_BOOT_MENU": "Показать вторичное загрузочное меню", diff --git a/INSTALL/grub/menu/sr_RS.json b/INSTALL/grub/menu/sr_RS.json index 868362ae..81b353eb 100644 --- a/INSTALL/grub/menu/sr_RS.json +++ b/INSTALL/grub/menu/sr_RS.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "press Enter key to continue", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/ta_IN.json b/INSTALL/grub/menu/ta_IN.json index b70e86c7..a3cc9315 100644 --- a/INSTALL/grub/menu/ta_IN.json +++ b/INSTALL/grub/menu/ta_IN.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "தொடர Enter விசையை அழுத்தவும்", "VTLANG_CTRL_TEMP_SET": "Temporary Control Settings", - "VTLANG_WIN11_BYPASS_CHECK": "Bypass check when install Windows 11", + "VTLANG_WIN11_BYPASS_CHECK": "Bypass CPU/TPM/SecureBoot check when install Windows 11", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Mount Ventoy partition after boot Linux", "VTLANG_SECONDARY_BOOT_MENU": "Show secondary boot menu", diff --git a/INSTALL/grub/menu/tr_TR.json b/INSTALL/grub/menu/tr_TR.json index 2cf80c55..07d0f23b 100644 --- a/INSTALL/grub/menu/tr_TR.json +++ b/INSTALL/grub/menu/tr_TR.json @@ -84,6 +84,7 @@ "VTLANG_CTRL_TEMP_SET": "Geçici Kontrol Ayarları", "VTLANG_WIN11_BYPASS_CHECK": "Windows11'i yükler iken TPM,CPU,RAM kontrollerini atla", + "VTLANG_WIN11_BYPASS_NRO": "Bypass online account requirement when install Windows 11", "VTLANG_LINUX_REMOUNT": "Linux sistemi önyükledikten sonra, Ventoy bölümünü bağla", "VTLANG_SECONDARY_BOOT_MENU": "İkincil önyükleme menüsünü göster", diff --git a/INSTALL/grub/menu/zh_CN.json b/INSTALL/grub/menu/zh_CN.json index 3bc13113..e1d4fff7 100644 --- a/INSTALL/grub/menu/zh_CN.json +++ b/INSTALL/grub/menu/zh_CN.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "按回车键继续", "VTLANG_CTRL_TEMP_SET": "控制变量设置", - "VTLANG_WIN11_BYPASS_CHECK": "安装 Windows 11 时绕过硬件检查", + "VTLANG_WIN11_BYPASS_CHECK": "安装 Windows 11 时绕过 TPM/安全启动 等硬件检查", + "VTLANG_WIN11_BYPASS_NRO": "安装 Windows 11 时绕过在线账户的要求", "VTLANG_LINUX_REMOUNT": "启动 Linux 系统后挂载 Ventoy 分区", "VTLANG_SECONDARY_BOOT_MENU": "显示二级启动菜单", diff --git a/INSTALL/grub/menu/zh_TW.json b/INSTALL/grub/menu/zh_TW.json index c161c9bf..b1d05c5d 100644 --- a/INSTALL/grub/menu/zh_TW.json +++ b/INSTALL/grub/menu/zh_TW.json @@ -83,7 +83,8 @@ "VTLANG_ENTER_CONTINUE": "按回車鍵繼續", "VTLANG_CTRL_TEMP_SET": "控制變量設置", - "VTLANG_WIN11_BYPASS_CHECK": "安裝 Windows 11 時繞過硬件檢查", + "VTLANG_WIN11_BYPASS_CHECK": "安裝 Windows 11 時繞過TPM/安全啟動等硬件檢查", + "VTLANG_WIN11_BYPASS_NRO": "安裝 Windows 11 時繞過在線賬戶的要求", "VTLANG_LINUX_REMOUNT": "啟動 Linux 系統後掛載 Ventoy 分區", "VTLANG_SECONDARY_BOOT_MENU": "顯示二級啟動菜單", diff --git a/INSTALL/ventoy/vtoyjump32.exe b/INSTALL/ventoy/vtoyjump32.exe index 5ef9ccd0..1be091b4 100644 Binary files a/INSTALL/ventoy/vtoyjump32.exe and b/INSTALL/ventoy/vtoyjump32.exe differ diff --git a/INSTALL/ventoy/vtoyjump64.exe b/INSTALL/ventoy/vtoyjump64.exe index f3b3da73..acdcc0e2 100644 Binary files a/INSTALL/ventoy/vtoyjump64.exe and b/INSTALL/ventoy/vtoyjump64.exe differ diff --git a/Plugson/src/Web/ventoy_http.c b/Plugson/src/Web/ventoy_http.c index cbe45357..2fdc3e75 100644 --- a/Plugson/src/Web/ventoy_http.c +++ b/Plugson/src/Web/ventoy_http.c @@ -557,6 +557,8 @@ void ventoy_data_default_control(data_control *data) data->max_search_level = -1; data->menu_timeout = 0; data->secondary_menu_timeout = 0; + data->win11_bypass_check = 1; + data->win11_bypass_nro = 1; strlcpy(data->default_kbd_layout, "QWERTY_USA"); strlcpy(data->menu_language, "en_US"); @@ -577,6 +579,7 @@ int ventoy_data_cmp_control(data_control *data1, data_control *data2) data1->filter_vhd != data2->filter_vhd || data1->filter_vtoy != data2->filter_vtoy || data1->win11_bypass_check != data2->win11_bypass_check || + data1->win11_bypass_nro != data2->win11_bypass_nro || data1->linux_remount != data2->linux_remount || data1->password_asterisk != data2->password_asterisk || data1->secondary_menu != data2->secondary_menu || @@ -625,6 +628,7 @@ int ventoy_data_save_control(data_control *data, const char *title, char *buf, i VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VHD", filter_vhd); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VTOY", filter_vtoy); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_WIN11_BYPASS_CHECK", win11_bypass_check); + VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_WIN11_BYPASS_NRO", win11_bypass_nro); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_LINUX_REMOUNT", linux_remount); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_SECONDARY_BOOT_MENU", secondary_menu); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_SHOW_PASSWORD_ASTERISK", password_asterisk); @@ -673,6 +677,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen) VTOY_JSON_FMT_SINT("filter_vhd", ctrl->filter_vhd); VTOY_JSON_FMT_SINT("filter_vtoy", ctrl->filter_vtoy); VTOY_JSON_FMT_SINT("win11_bypass_check", ctrl->win11_bypass_check); + VTOY_JSON_FMT_SINT("win11_bypass_nro", ctrl->win11_bypass_nro); VTOY_JSON_FMT_SINT("linux_remount", ctrl->linux_remount); VTOY_JSON_FMT_SINT("secondary_menu", ctrl->secondary_menu); VTOY_JSON_FMT_SINT("password_asterisk", ctrl->password_asterisk); @@ -741,6 +746,7 @@ static int ventoy_api_save_control(struct mg_connection *conn, VTOY_JSON *json) VTOY_JSON_INT("filter_vhd", ctrl->filter_vhd); VTOY_JSON_INT("filter_vtoy", ctrl->filter_vtoy); VTOY_JSON_INT("win11_bypass_check", ctrl->win11_bypass_check); + VTOY_JSON_INT("win11_bypass_nro", ctrl->win11_bypass_nro); VTOY_JSON_INT("linux_remount", ctrl->linux_remount); VTOY_JSON_INT("secondary_menu", ctrl->secondary_menu); VTOY_JSON_INT("password_asterisk", ctrl->password_asterisk); @@ -4130,6 +4136,10 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p) { CONTROL_PARSE_INT_DEF_0(child, data->win11_bypass_check); } + else if (strcmp(child->pcName, "VTOY_WIN11_BYPASS_NRO") == 0) + { + CONTROL_PARSE_INT_DEF_0(child, data->win11_bypass_nro); + } else if (strcmp(child->pcName, "VTOY_LINUX_REMOUNT") == 0) { CONTROL_PARSE_INT_DEF_0(child, data->linux_remount); diff --git a/Plugson/src/Web/ventoy_http.h b/Plugson/src/Web/ventoy_http.h index b47edea4..f1c1737d 100644 --- a/Plugson/src/Web/ventoy_http.h +++ b/Plugson/src/Web/ventoy_http.h @@ -75,6 +75,7 @@ typedef struct data_control int filter_vhd; int filter_vtoy; int win11_bypass_check; + int win11_bypass_nro; int menu_timeout; int secondary_menu_timeout; int linux_remount; diff --git a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe index 84f2b697..da86c027 100644 Binary files a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe and b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe differ diff --git a/Plugson/vs/VentoyPlugson/x64/Release/VentoyPlugson_X64.exe b/Plugson/vs/VentoyPlugson/x64/Release/VentoyPlugson_X64.exe index ef6e231e..56765834 100644 Binary files a/Plugson/vs/VentoyPlugson/x64/Release/VentoyPlugson_X64.exe and b/Plugson/vs/VentoyPlugson/x64/Release/VentoyPlugson_X64.exe differ diff --git a/Plugson/www/index.html b/Plugson/www/index.html index 523b29fa..1ff42185 100644 --- a/Plugson/www/index.html +++ b/Plugson/www/index.html @@ -777,10 +777,10 @@ - + - - + + diff --git a/Plugson/www/plugson_control.html b/Plugson/www/plugson_control.html index 1e9a258c..7928fa81 100644 --- a/Plugson/www/plugson_control.html +++ b/Plugson/www/plugson_control.html @@ -172,6 +172,53 @@ + + +
+
+

VTOY_WIN11_BYPASS_NRO + —— 绕过Windows 11 在线账户需求

+
+ +
+
+
+ + + + + + + + + + + + + +
选项设置 +      + +
选项说明 + 0 不绕过Windows 11安装时的在线账户需求。
+ 1 绕过Windows 11安装时的在线账户需求。

+ 该选项只对标准Windows 11 ISO文件有效,对于其他镜像文件无效。 + 当设置为1时,Ventoy 会在安装时创建以下注册表项用来绕过 Windows 11 安装时对在线账户的需求。
+ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO
+
Option Description + 0 Do not bypass Windows 11 online account requirement.
+ 1 Bypass Windows 11 online account requirement.

+ This option only avaliable for standard Windows 11 ISO files. + When set to 1, Ventoy will create the following registry to bypass Windows 11 online account requirement when install.
+ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO +
+
+
+ @@ -1060,6 +1107,7 @@ var level; data.win11_bypass_check = parseInt($('input:radio[name=id_ctrl_bypass_win11_radio]:checked').val()); + data.win11_bypass_nro = parseInt($('input:radio[name=id_ctrl_bypass_nro_radio]:checked').val()); data.linux_remount = parseInt($('input:radio[name=id_ctrl_linux_remount_radio]:checked').val()); data.secondary_menu = parseInt($('input:radio[name=id_ctrl_secondary_radio]:checked').val()); data.password_asterisk = parseInt($('input:radio[name=id_ctrl_asterisk_radio]:checked').val()); @@ -1096,6 +1144,8 @@ function VtoyFillCurrentPageItem(data) { //VTOY_WIN11_BYPASS_CHECK $('input:radio[name=id_ctrl_bypass_win11_radio]')[data.win11_bypass_check].checked = true; + //VTOY_WIN11_BYPASS_NRO + $('input:radio[name=id_ctrl_bypass_nro_radio]')[data.win11_bypass_nro].checked = true; $('input:radio[name=id_ctrl_linux_remount_radio]')[data.linux_remount].checked = true; $('input:radio[name=id_ctrl_secondary_radio]')[data.secondary_menu].checked = true; $('input:radio[name=id_ctrl_asterisk_radio]')[data.password_asterisk].checked = true; @@ -1202,6 +1252,7 @@ method : 'save_control', index: current_tab_index, win11_bypass_check: data.win11_bypass_check, + win11_bypass_nro: data.win11_bypass_nro, linux_remount:data.linux_remount, secondary_menu:data.secondary_menu, password_asterisk:data.password_asterisk, diff --git a/vtoyjump/vtoyjump/vtoyjump.c b/vtoyjump/vtoyjump/vtoyjump.c index bbf566e4..c68e9880 100644 --- a/vtoyjump/vtoyjump/vtoyjump.c +++ b/vtoyjump/vtoyjump/vtoyjump.c @@ -2022,7 +2022,7 @@ static int ProcessUnattendedInstallation(const char *script, DWORD PhyDrive) return 0; } -static int Windows11BypassCheck(const char *isofile, const char MntLetter) +static int Windows11Bypass(const char *isofile, const char MntLetter, UINT8 Check, UINT8 NRO) { int Ret = 1; DWORD dwHandle; @@ -2034,7 +2034,7 @@ static int Windows11BypassCheck(const char *isofile, const char MntLetter) CHAR CheckFile[MAX_PATH]; UINT16 Major, Minor, Build, Revision; - Log("Windows11BypassCheck for <%s> %C:", isofile, MntLetter); + Log("Windows11Bypass for <%s> %C: Check:%u NRO:%u", isofile, MntLetter, Check, NRO); if (FALSE == IsFileExist("%C:\\sources\\boot.wim", MntLetter) || FALSE == IsFileExist("%C:\\sources\\compatresources.dll", MntLetter)) @@ -2099,28 +2099,53 @@ static int Windows11BypassCheck(const char *isofile, const char MntLetter) HKEY hSubKey = NULL; LSTATUS Status; - Status = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "System\\Setup", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwSize); - if (ERROR_SUCCESS != Status) + if (Check) { - Log("Failed to create reg key System\\Setup %u %u", LASTERR, Status); - goto End; + Status = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "System\\Setup", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwSize); + if (ERROR_SUCCESS != Status) + { + Log("Failed to create reg key System\\Setup %u %u", LASTERR, Status); + goto End; + } + + Status = RegCreateKeyExA(hKey, "LabConfig", 0, NULL, 0, KEY_SET_VALUE | KEY_QUERY_VALUE | KEY_CREATE_SUB_KEY, NULL, &hSubKey, &dwSize); + if (ERROR_SUCCESS != Status) + { + Log("Failed to create LabConfig reg %u %u", LASTERR, Status); + goto End; + } + + //set reg value + Status += RegSetValueExA(hSubKey, "BypassRAMCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + Status += RegSetValueExA(hSubKey, "BypassTPMCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + Status += RegSetValueExA(hSubKey, "BypassSecureBootCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + Status += RegSetValueExA(hSubKey, "BypassStorageCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + Status += RegSetValueExA(hSubKey, "BypassCPUCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + + Log("Create bypass check registry %s %u", (Status == ERROR_SUCCESS) ? "SUCCESS" : "FAILED", Status); } - Status = RegCreateKeyExA(hKey, "LabConfig", 0, NULL, 0, KEY_SET_VALUE | KEY_QUERY_VALUE | KEY_CREATE_SUB_KEY, NULL, &hSubKey, &dwSize); - if (ERROR_SUCCESS != Status) + + if (NRO) { - Log("Failed to create LabConfig reg %u %u", LASTERR, Status); - goto End; - } + Status = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwSize); + if (ERROR_SUCCESS != Status) + { + Log("Failed to create reg key SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OOBE %u %u", LASTERR, Status); + goto End; + } - //set reg value - Status += RegSetValueExA(hSubKey, "BypassRAMCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); - Status += RegSetValueExA(hSubKey, "BypassTPMCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); - Status += RegSetValueExA(hSubKey, "BypassSecureBootCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); - Status += RegSetValueExA(hSubKey, "BypassStorageCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); - Status += RegSetValueExA(hSubKey, "BypassCPUCheck", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + Status = RegCreateKeyExA(hKey, "OOBE", 0, NULL, 0, KEY_SET_VALUE | KEY_QUERY_VALUE | KEY_CREATE_SUB_KEY, NULL, &hSubKey, &dwSize); + if (ERROR_SUCCESS != Status) + { + Log("Failed to create OOBE reg %u %u", LASTERR, Status); + goto End; + } - Log("Create bypass registry %s %u", (Status == ERROR_SUCCESS) ? "SUCCESS" : "FAILED", Status); + Status += RegSetValueExA(hSubKey, "BypassNRO", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); + Log("Create BypassNRO registry %s %u", (Status == ERROR_SUCCESS) ? "SUCCESS" : "FAILED", Status); + } + Ret = 0; @@ -2353,9 +2378,9 @@ static int VentoyHook(ventoy_os_param *param) Log("Mount ISO FILE: %s", rc == 0 ? "SUCCESS" : "FAILED"); //Windows 11 bypass check - if (g_windows_data.windows11_bypass_check == 1) + if (g_windows_data.windows11_bypass_check == 1 || g_windows_data.windows11_bypass_nro == 1) { - Windows11BypassCheck(IsoPath, MntLetter); + Windows11Bypass(IsoPath, MntLetter, g_windows_data.windows11_bypass_check, g_windows_data.windows11_bypass_nro); } // for protect diff --git a/vtoyjump/vtoyjump/vtoyjump.h b/vtoyjump/vtoyjump/vtoyjump.h index 768d7cc2..335a6f49 100644 --- a/vtoyjump/vtoyjump/vtoyjump.h +++ b/vtoyjump/vtoyjump/vtoyjump.h @@ -75,7 +75,9 @@ typedef struct ventoy_windows_data UINT32 auto_install_len; - UINT8 reserved[255 - 4]; + UINT8 windows11_bypass_nro; + + UINT8 reserved[255 - 5]; /* auto install script file data ... + auto_install_len */ /* ...... */