检查清单
期望的行为
应用最新版可以在部分未打齐最新累积补丁的 Windows 10 设备上正常运行
实际结果
该问题与 InkCanvasForClass/community#648 类似,其均为 .NET 10 的版本的程序在我们班出现的问题
问题现象
应用在部分未打齐最新累积补丁的 Windows 10 设备(常见于内网机房、旧版系统、教学大屏等)上双击后完全没有反应,启动即发生静默致命崩溃(Process Exit),且无任何 UI 报错弹窗。
根本原因
编译机制默认开启 CET:高版本 .NET(.NET 9 / .NET 10)在编译/打包时默认启用了硬件影子栈兼容性标记(Control-flow Enforcement Technology,即 /CETCOMPAT)。
旧版 Win10 存在系统级缺陷:旧版本 Windows 10 内核(如 ntdll.dll 低于 10.0.19041.5007)在解析该 PE 头的 CET 标志时存在兼容性 Bug,导致进程初始化阶段直接被系统终止。
推荐解决方案(开发端修复)
在主程序(以及所有独立宿主/子进程程序,如 .LiquidGlassMagHost)的 .csproj 文件中显式关闭 CET 兼容性,重新编译打包即可:
<PropertyGroup>
<!-- 显式禁用 CETCompat,解决旧版 Win10 上的启动崩溃 -->
<CetCompat>false</CetCompat>
</PropertyGroup>
重现步骤
要复现此问题,需要满足“支持 CET 的现代硬件”与“未打齐 2024 年 10 月安全补丁的 Windows 10 系统”两个核心条件。
复现所需环境
硬件要求:必须在支持 Intel Tiger Lake(第 11 代 Core 及以上)或 AMD Zen 3(Ryzen 5000 及以上)的真机(或开启了 CPU 虚拟化传递的虚拟机)上测试。旧 CPU 不具备硬件影子栈,无法触发此底层指令校验。
系统环境:安装未更新至最新补丁的 Windows 10(如 21H2 / 22H2 原始 ISO,确保 ntdll.dll 版本低于 10.0.19041.5007,即未安装 KB5044273 补丁)。
开发环境:.NET 9 或 .NET 10 SDK。
Gemini 说的,我并未实际尝试复现()
截图/录屏(可选,建议)
真实教室环境截图(别问我为啥在大屏上用CC,问就是新班主任不管):
诊断信息
无stdout/err,无日志
最后一步
检查清单
期望的行为
应用最新版可以在部分未打齐最新累积补丁的 Windows 10 设备上正常运行
实际结果
问题现象
应用在部分未打齐最新累积补丁的 Windows 10 设备(常见于内网机房、旧版系统、教学大屏等)上双击后完全没有反应,启动即发生静默致命崩溃(Process Exit),且无任何 UI 报错弹窗。
根本原因
编译机制默认开启 CET:高版本 .NET(.NET 9 / .NET 10)在编译/打包时默认启用了硬件影子栈兼容性标记(Control-flow Enforcement Technology,即 /CETCOMPAT)。
旧版 Win10 存在系统级缺陷:旧版本 Windows 10 内核(如 ntdll.dll 低于 10.0.19041.5007)在解析该 PE 头的 CET 标志时存在兼容性 Bug,导致进程初始化阶段直接被系统终止。
推荐解决方案(开发端修复)
在主程序(以及所有独立宿主/子进程程序,如 .LiquidGlassMagHost)的 .csproj 文件中显式关闭 CET 兼容性,重新编译打包即可:
重现步骤
要复现此问题,需要满足“支持 CET 的现代硬件”与“未打齐 2024 年 10 月安全补丁的 Windows 10 系统”两个核心条件。
复现所需环境
硬件要求:必须在支持 Intel Tiger Lake(第 11 代 Core 及以上)或 AMD Zen 3(Ryzen 5000 及以上)的真机(或开启了 CPU 虚拟化传递的虚拟机)上测试。旧 CPU 不具备硬件影子栈,无法触发此底层指令校验。
系统环境:安装未更新至最新补丁的 Windows 10(如 21H2 / 22H2 原始 ISO,确保 ntdll.dll 版本低于 10.0.19041.5007,即未安装 KB5044273 补丁)。
开发环境:.NET 9 或 .NET 10 SDK。
截图/录屏(可选,建议)
真实教室环境截图(别问我为啥在大屏上用CC,问就是新班主任不管):
诊断信息
无stdout/err,无日志
最后一步