为什么/如何在Regedit中隐藏注册表项,但在PowerShell中可见?

Jay*_*ton 5 windows registry powershell windows-shell

我正在使用新的属性架构,并且在我注册或注销新版本时一直习惯检查注册表。检查此问题的主要地点之一是HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\PROPERTYSYSTEM\PROPERTYSCHEMA

有趣的是,我有时会失去对Regedit中此注册表位置的访问权限。我看到了这一点(注意缺少PropertySchema):在此处输入图片说明

我知道架构仍在注册,因为我可以使用prop.exe工具和propschema SDK示例应用程序来描述它们。这些属性在Windows资源管理器和“搜索”中可用。

另外,我可以使用PowerShell列出此配置单元的内容:

C:\Users\carlton> cd hklm:
HKLM:\>
C:\Users\carlton> cd hklm:
HKLM:\> cd SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\PROPERTYSYSTEM\PROPERTYSCHEMA
HKLM:\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\PROPERTYSYSTEM\PROPERTYSCHEMA> dir


    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\PROPERTYSYSTEM\PROPERTYSCHEMA


Name                           Property
----                           --------
0000                           (default)  : C:\Program Files\Internet Explorer\ie9props.propdesc
                               SchemaId   : {D9B5ABA1-5E8A-4902-B6A1-50B3C0311C2E}
                               URI        : ie9props.propdesc
                               CompactURI : 5376bae4b39f43768806afcb6b8ff5464bf9c989d1a819c6e6d99ba1e8ce2512
0001                           (default)  : C:\Program Files\Microsoft Office\Office14\Custom.propdesc
                               SchemaId   : {537AAAB1-1D85-48DC-A99E-16EB8C309FE5}
                               URI        : custom.propdesc
                               CompactURI : 2e3be58e5cbbc0da093956b46a3905f11cf0f5bbf11987a8619e25f7261ee8be
0002                           (default)  : C:\apps\MSOffice\Office14\VisioCustom.propdesc
                               SchemaId   : {18503526-0466-4942-AC6E-41C1D380EABA}
                               URI        : visiocustom.propdesc
...
Run Code Online (Sandbox Code Playgroud)

无论如何,我不了解这种情况如何发生以及是否应该为此担心。从同事的计算机上导出此密钥并重新导入它可以暂时提供帮助,因为它将在Regedit中显示已隐藏/丢失的密钥(即使它们不在我的同事的计算机上)。

我在运行Windows 7 SP1的Administrators组中。

小智 6

注册表的“Wow6432Node”文件夹中可用的 64 位系统上的 32 位程序数据(在上述情况下为“SOFTWARE\Wow6432Node\MICROSOFT\WINDOWS...”)。这对应用程序是透明的,因此您可以从应用程序读取数据,但在 Regedit 中看不到。


Jay*_*ton 3

哈里约翰斯顿的直觉是正确的。我使用路径从命令行重新运行 regedit c:\windows\regedit,我再次看到了我所期望的结果HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertySchema。我可以发誓它也没有显示它,但显然它现在正在工作。

我通过从 64 位和 32 位 regedit 导出父密钥 (PropertySystem) 并运行 Beyond Compare 来确认这一点。32 位版本中确实不存在 propdesc 文件。

请参阅注册表中的 32 位和 64 位应用程序数据 (MSDN)