为什么 Windows 注册表配置单元显示为空?

Hey*_*Hey 3 windows windows-registry

我进入"C:\Windows\System32\config"了我的 Windows 10 机器,并尝试打开注册表配置单元文件。

SOFTWARE例如,资源管理器报告的大小正好为 128 MB,但是当使用 Visual Studio Code 打开它时,它显示为空。记事本拒绝打开它,因为它“被另一个进程使用”。对于其他文件(、 等)SYSTEM,我得到了相同的结果SECURITY

Windows 是否试图阻止我做一些愚蠢的事情?这些文件在某些​​方面是否特殊(除了托管注册表)?

use*_*686 9

它们显示为空是因为 Visual Studio Code 不理解无法打开文件的概念。它们实际上并不是空的,vscode 只是实际上无法知道它们是否为空。

Windows 有“独占打开”的概念(又名“共享模式”,在别处也称为“强制锁定”)。数据库软件通常使用它来防止另一个程序在数据库引擎管理数据的同时写入数据;如果两个处理程序试图同时写入,它们最终可能会破坏整个数据库。这同样适用于文件系统——如果原始磁盘设备作为文件系统安装,Windows 实际上并不允许您访问原始磁盘设备。

(也就是说,有专门用于同时访问,如LMDB制成数据库格式)。

主要的原因Windows注册表采用独家开放是安全实施。每个注册表项都可以附加一组权限 (DACL/SACL),就像文件或文件夹一样。如果您可以直接打开注册表配置单元(尤其是系统或安全配置单元),您就可以简单地读取本应通过权限保护的数据。