我正在使用新的属性架构,并且在我注册或取消注册新版本时一直习惯于检查注册表。检查这个的主要地方之一是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
...
无论如何,我不明白这是怎么发生的,我是否应该为此担心。从同事的机器导出此密钥并重新导入它可以暂时提供帮助,因为它会显示Regedit中隐藏/丢失的密钥(即使它们不在我同事的机器上)。
我在管理员组中,运行Windows 7 SP1。
哈里约翰斯顿的直觉是正确的。我从路径c:\windows\regedit
的命令行重新运行regedit,我再次看到我在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertySchema
下的预期。我本来可以发誓它也没有表现出来,但它现在正在发挥作用。
我通过从64位和32位regedit导出父键(PropertySystem)并运行Beyond Compare来确认。在32位版本中,propdesc文件确实不存在。
64位系统上的32位程序数据可在注册表的“Wow6432Node”文件夹中找到(在上面的例子中为“SOFTWARE \ Wow6432Node \ MICROSOFT \ WINDOWS ...”)。这对应用程序是透明的,因此您可以从应用程序读取数据,但在Regedit中没有看到。