C:\Windows\System32(32 位环境下为 SysWOW64),属于 Windows 应用程序兼容性(Application Compatibility)基础设施的组成部分,与 apphelp.dll、acgenral.dll、acspecfc.dll、aclayers.dll 等同处一个组件族,随系统版本更新而迭代。
1. 兼容性修复项(Shim)的解析与装载
Windows 将针对旧版程序的兼容性修正规则集中存放在 Shim Database(.sdb 文件,如 sysmain.sdb)中。spcompat.dll 负责参与读取这些规则,把其中的匹配条件(可执行文件名、路径、版本资源、厂商信息)与修复动作解析成内存中的修复链,供兼容性引擎在进程创建时进行比对与套用。
2. Shim 分发与执行上下文管理
它并不直接实现所有修复逻辑,而是把解析出的修复请求分发给具体实现模块,例如通用修复由 acgenral.dll 承担、特定场景修复由 acspecfc.dll、aclayers.dll 承担。spcompat.dll 在其中负责调度、加载顺序控制以及修复上下文(Shim Context)的创建与释放。
3. 配合 AppHelp 机制完成进程内注入
在 CreateProcess 阶段,系统会先判断目标程序是否需要套用修复;若需要,则把相关数据压入进程环境块。spcompat.dll 参与目标进程内的初始化过程,为后续的 API 重定向、导出表 Hook 与函数拦截打好基础。
4. 兼容性策略的判定与提供
包括版本伪造(让程序读到指定的 Windows 版本号)、DEP/NX 策略调整、UAC 文件与注册表虚拟化、高 DPI 与 Session 隔离等兼容行为的开关判定,都可能经由该组件参与的状态查询接口完成。
sfc /scannow 与 DISM /Online /Cleanup-Image /RestoreHealth 进行文件完整性修复;确需手工替换时,必须取自同版本、同架构(x86/x64)的系统镜像,并避免从来源不明的网站下载。