Microsoft.Win32.Registry.dll 是 .NET 框架中 Microsoft.Win32.Registry 程序集对应的物理文件,通常位于 %windir%\Microsoft.NET\Framework\v4.0.30319\ 或全局程序集缓存(GAC)中。它并非 Windows 内核组件,而是托管代码与 Win32 注册表 API 之间的一层桥梁。
1. 托管封装:提供 Registry、RegistryKey、RegistryHive、RegistryValueKind 等类型,内部映射 RegOpenKeyEx、RegQueryValueEx、RegSetValueEx、RegEnumKeyEx、RegDeleteKey 等 Win32 接口,使托管代码无需 P/Invoke 即可操作注册表。
2. 项与值操作:支持注册表项的打开、创建、枚举、重命名与删除,以及 REG_SZ、REG_DWORD、REG_QWORD、REG_BINARY、REG_MULTI_SZ 等类型的读写与自动类型转换。
3. 视图与重定向:通过 RegistryView 枚举区分 32 位与 64 位视图,自动处理 WOW64 注册表重定向,避免跨位数读写错位。
4. 安全与权限:借助 RegistrySecurity、RegistryAccessRule 读写 ACL,支持权限枚举、所有者修改与访问审计。
5. 远程与事务:OpenRemoteBaseKey 支持远程注册表访问;结合 Transaction 可实现事务性注册表操作,并支持键变更通知与句柄及时释放。
读取 HKLM\SOFTWARE 下的软件配置、写入用户偏好、安装程序注册 COM 组件与文件关联、企业策略与配置下发工具、服务参数与日志级别的动态调整,均依赖该程序集。
加载期异常:程序启动即抛出 FileNotFoundException(无法加载文件或程序集)、FileLoadException 或 TypeLoadException,应用直接崩溃。
功能级故障:任何调用 Microsoft.Win32 命名空间的应用在读取配置、检测版本、写入注册表时均会中断,常见提示为“无法加载文件或程序集 Microsoft.Win32.Registry”。
部署级影响:安装与卸载程序无法写注册表,COM/ActiveX 注册失败,ClickOnce 部署、企业内部工具及部分脚本宿主失效。
隐性风险:部分程序会静默回退到默认配置,造成设置丢失或被错误覆盖,问题难以定位。
恢复方式:通过 .NET Framework 修复安装、sfc /scannow 或重装依赖运行库恢复,不建议从第三方站点下载替换该文件。