2015-07-21 125 views
3

我正在使用新的屬性架構,並且在註冊或取消註冊新版本時一直習慣於檢查註冊表。其中一個主要檢查點是HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\PROPERTYSYSTEM\PROPERTYSCHEMA註冊表項爲什麼/如何註冊表項在Regedit中隱藏但在PowerShell中可見?

有趣的是,我偶爾會失去對Regedit中此註冊表位置的訪問權限。我看到這個(注意PropertySchema的缺席):enter image description here

我知道模式仍然是註冊的,因爲我可以使用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。

+3

也許你不經意間運行的是註冊表編輯器或PowerShell的的32位版本? 32位應用程序和64位應用程序具有不同的註冊表視圖。 –

+0

@HarryJohnston在我的機器上,'c:\ windows \ regedit.exe'是64位的。 'C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe'也是64位的。 也可能值得注意的是,我通常使用SysInternals的regjump在Regedit內部導航,但它使用活動的Regedit實例。 –

+0

如果您使用regjump並且沒有活動的regedit實例,會發生什麼情況?新實例是64位還是32位? –

回答

1

哈利約翰斯頓的直覺是正確的。我從路徑爲c:\windows\regedit的命令行重新運行了regedit,我再次看到我在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertySchema下的預期。我本可以發誓它也沒有顯示它,但顯然它現在正在工作。

我通過導出64位和32位註冊表編輯器的父鍵(PropertySystem)並運行Beyond Compare來確認。 propdesc文件在32位版本中確實不存在。

32-bit and 64-bit Application Data in the Registry (MSDN)