1. Add VTOY_WIN11_BYPASS_NRO option in Global Control Plugin.

2. Change the default value of VTOY_WIN11_BYPASS_CHECK and VTOY_WIN11_BYPASS_NRO options to 1.
pull/2099/head
longpanda 1 year ago
parent 54bca8c942
commit f597497da6

@ -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 }

@ -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)

@ -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 */

@ -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

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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",

@ -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": "보조 부트 메뉴 표시",

@ -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",

@ -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",

@ -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": "Показать вторичное загрузочное меню",

@ -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",

@ -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",

@ -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",

@ -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": "显示二级启动菜单",

@ -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": "顯示二級啟動菜單",

Binary file not shown.

Binary file not shown.

@ -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);

@ -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;

@ -777,10 +777,10 @@
<script src="/static/js/jQuery-2.1.4.min.js"></script>
<!-- jquery validate -->
<script src="/static/js/jquery.validate.min.js"></script>
<script src="/static/js/jquery.validate.vtoymethods.js?v=106"></script>
<script src="/static/js/jquery.validate.vtoymethods.js?v=108"></script>
<script src="/static/js/jquery.vtoy.alert.js?v=106"></script>
<script src="/static/js/vtoy.js?v=106"></script>
<script src="/static/js/jquery.vtoy.alert.js?v=108"></script>
<script src="/static/js/vtoy.js?v=108"></script>
<script src="/static/js/md5.min.js"></script>
<!-- Bootstrap 3.3.5 -->

@ -172,6 +172,53 @@
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_WIN11_BYPASS_NRO
<span id="id_span_desc_cn"> —— 绕过Windows 11 在线账户需求</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<label class="radio-inline">
<input type="radio" id="id_ctrl_bypass_nro_radio0" name="id_ctrl_bypass_nro_radio" data-type="0" value="0"/> <span style="font-weight:bold;">0</span>
</label>&nbsp;&nbsp;&nbsp;&nbsp;
<label class="radio-inline">
<input type="radio" id="id_ctrl_bypass_nro_radio1" name="id_ctrl_bypass_nro_radio" data-type="1" value="1"/> <span style="font-weight:bold;">1</span>
</label>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>
<code style="font-weight: bold;">0</code> 不绕过Windows 11安装时的在线账户需求。<br/>
<code style="font-weight: bold;">1</code> 绕过Windows 11安装时的在线账户需求。<br/><br/>
该选项只对标准Windows 11 ISO文件有效对于其他镜像文件无效。
当设置为1时Ventoy 会在安装时创建以下注册表项用来绕过 Windows 11 安装时对在线账户的需求。<br/>
<code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO</code><br/>
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td>
<code style="font-weight: bold;">0</code> Do not bypass Windows 11 online account requirement.<br/>
<code style="font-weight: bold;">1</code> Bypass Windows 11 online account requirement. <br/><br/>
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. <br/>
<code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO</code>
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
@ -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,

@ -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

@ -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 */
/* ...... */

Loading…
Cancel
Save