Windows 10 S可执行文件运行判定机制及CreateProcess内核实现疑问
Windows 10 S 可执行文件权限控制与 CreateProcess 校验逻辑解析
Great question! Let's break down how Windows 10 S controls executable permissions and why tools like Notepad vs. Regedit behave differently:
一、Windows 10 S 允许运行的可执行文件判定规则
Windows 10 S 采用双重信任验证机制来管控可执行文件,核心原则是只允许两类程序运行:
- 系统预授权的核心组件:这些是Windows自带的基础工具和系统文件,微软在系统出厂时就将它们加入了内置的信任清单。这类文件通常存放在受保护的系统目录(如
C:\Windows\System32、C:\Windows),系统会结合目录完整性校验和内置数据库来确认它们的合法性,而非单纯依赖单个文件的签名。 - Microsoft Store 发布的应用:所有Store应用都经过微软的签名验证和安全审核,以Appx/MSIX格式打包安装在
C:\Program Files\WindowsApps目录下。系统启动这类应用时,会验证其签名身份、发布者信息和文件完整性,确保没有被篡改。
二、内核中 CreateProcess 的差异化校验逻辑
在Windows 10 S的内核层面,CreateProcess函数在启动进程前会触发额外的拦截校验步骤:
- 路径与目录校验:首先检查目标文件的存放目录,如果是系统受保护目录,会查询内置的信任数据库,确认该文件是否属于预授权的系统组件。
- 签名与身份校验:如果目标文件在Store应用目录,会验证其Appx/MSIX包的签名和发布者身份,确保是经过微软审核的合法应用。
- 拦截非信任文件:对于既不在系统受保护目录、也不在Store应用目录,且未被列入信任清单的文件,
CreateProcess会直接返回创建失败,阻止进程启动。
三、Notepad.exe 与 Regedit.exe 的区分依据
你提到的这个例子正好体现了Windows 10 S的设计意图:
- Notepad.exe:作为系统默认的文本编辑器,属于Windows核心基础工具,被明确列入了预信任系统组件清单。即使单独查看它的签名可能不突出,但系统通过目录权限(
C:\Windows\System32是受保护目录,普通用户无法随意修改)和内置数据库的双重验证,确认它是安全且符合系统设计目标的工具,因此允许运行。 - Regedit.exe:虽然也是系统自带工具,但它的功能是修改系统注册表,这会直接影响系统的稳定性和安全性。Windows 10 S的定位是提供一个封闭、安全的系统环境,因此微软将这类可能修改系统配置的工具明确排除在信任清单之外。即使它和Notepad在同一个系统目录,
CreateProcess的校验逻辑会单独识别并阻止它启动。
测试验证
正如你所说,现在可以通过媒体创建工具生成可在虚拟机中运行的Windows 10 S镜像,实际测试时会发现:双击Notepad.exe可以正常打开,而尝试启动Regedit.exe会弹出“此应用无法在你的电脑上运行”的提示,完全符合上述的管控逻辑。
内容的提问来源于stack exchange,提问作者c00000fd




