如何在文件资源管理器中显示OLE Compound Document的详细信息? [英] Howto display details of OLE Compound Document in File Explorer?

查看:194
本文介绍了如何在文件资源管理器中显示OLE Compound Document的详细信息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello All,

我的应用程序写了一个带有摘要属性的OLE复合文档。

我无法调整注册表,以便资源管理器显示这些文件属性。

如果我将文件重命名为.doc(或.xls或甚至.msi)扩展名,我会看到其他属性。

但不能在Windows 7系统上使用我自己的扩展程序。



现在我在Windows XP系统上复制了相同的文件,同样没有任何东西在注册表中更改。对于我(好吧,不太大)的惊喜,XP显示了属性中的所有预期数据。



XP在注册表中定义了以下条目:



[HKEY_CLASSES_ROOT \ * \ shellex \PropertySheetHandlers]



[HKEY_CLASSES_ROOT \ * \ shellex \ PropertySheetHandlers\CryptoSignMenu]

@ ={7444C719-39BF-11D1-8CD9-00C04FC29D45}

SuppressionValue= dword:00100000



[HKEY_CLASSES_ROOT \ * \\\\\\\\\ [HKEY_CLASSES_ROOT \ * \\\\\\\\ />
[HKEY_CLASSES_ROOT \ * \\\\\\\\\
SuppressionPolicy= dword:00100000 < br $>




三个CLSID如下:



{1F2E5C40-9550 -11CE-99D2-00AA006E086C}安全外壳扩展



[HKEY_CLASSES_ROOT\CLSID\ {1F2E5C40-9550-11CE-99D2-00AA006E086C}]

@ =" Security Shell Extension"



[HKEY_CLASSES_ROOT\CLSID\ {1F2E5C40-9550-11CE-99D2-00AA006E086C} \ InProcServer32]

@ =" rshx32.dll"

" ThreadingModel" =" Apartment"



{3EA48300 -8CF6-101B-84FB-666CCB9BCD32} OLE Docfile属性页

[HKEY_CLASSES_ROOT\CLSID \ {3EA48300-8CF6-101B-84FB-666CCB9BCD32}]

@ = OLE Docfile属性页



[HKEY_CLASSES_ROOT\CLSID \ {3EA48300-8CF6-101B-84FB-666CCB9BCD32} \ InProcServer32]

@ =" docprop.dll"

" ThreadingModel" =" Apartment"





{8833 73C3-BF89-11D1-BE35-080036B11A03} Microsoft DocProp Shell Ext

[HKEY_CLASSES_ROOT\CLSID \ {883373C3-BF89-11D1-BE35-080036B11A03}]

@ =Microsoft DocProp Shell Ext



[HKEY_CLASSES_ROOT\CLSID \ {883373C3-BF89-11D1-BE35-080036B11A03} \ InProcServer32]

@ =" C:\\ WINDOWS \\system32 \\docprop2.dll"

" ThreadingModel" =" Apartment"





在Windows 7系统上,相同的键显示在:

[HKEY_CLASSES_ROOT \ * \ shellex \PropertySheetHandlers ]

但没有SuppressionValue条目。



CLSID {883373C3-BF89-11D1-BE35-080036B11A03}指向shell32。





问候,



击败

Hello All,
my application writes a OLE compound document with summary properties.
I fail to tweak the registry so that the explorer shows these file properties.
If I rename the file to a .doc (or .xls or even .msi) extension, I see the additional properties.
But not with my own extension on Windows 7 systems.

Now I copied the same file on a Windows XP system, again without anything changed within the registry. To my (well, not sooo big) surprise, XP shows all the expected data within the properties.

XP defines the following entries within the registry:

[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers]

[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\CryptoSignMenu]
@="{7444C719-39BF-11D1-8CD9-00C04FC29D45}"
"SuppressionValue"=dword:00100000

[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\{1F2E5C40-9550-11CE-99D2-00AA006E086C}]

[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}]
"SuppressionPolicy"=dword:00100000

[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\{883373C3-BF89-11D1-BE35-080036B11A03}]
@="Summary Properties Page"
"SuppressionPolicy"=dword:00100000


The three CLSIDs are the following:

{1F2E5C40-9550-11CE-99D2-00AA006E086C} Security Shell Extension

[HKEY_CLASSES_ROOT\CLSID\{1F2E5C40-9550-11CE-99D2-00AA006E086C}]
@="Security Shell Extension"

[HKEY_CLASSES_ROOT\CLSID\{1F2E5C40-9550-11CE-99D2-00AA006E086C}\InProcServer32]
@="rshx32.dll"
"ThreadingModel"="Apartment"

{3EA48300-8CF6-101B-84FB-666CCB9BCD32} OLE Docfile Property Page
[HKEY_CLASSES_ROOT\CLSID\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}]
@="OLE Docfile Property Page"

[HKEY_CLASSES_ROOT\CLSID\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}\InProcServer32]
@="docprop.dll"
"ThreadingModel"="Apartment"


{883373C3-BF89-11D1-BE35-080036B11A03} Microsoft DocProp Shell Ext
[HKEY_CLASSES_ROOT\CLSID\{883373C3-BF89-11D1-BE35-080036B11A03}]
@="Microsoft DocProp Shell Ext"

[HKEY_CLASSES_ROOT\CLSID\{883373C3-BF89-11D1-BE35-080036B11A03}\InProcServer32]
@="C:\\WINDOWS\\system32\\docprop2.dll"
"ThreadingModel"="Apartment"


On a Windows 7 system, the same keys appear under:
[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers]
but without the SuppressionValue entries.

The CLSID {883373C3-BF89-11D1-BE35-080036B11A03} points into shell32.


Regards,

Beat

推荐答案

好吧,这个系统的bcs不知道你的文件。

你应该只指定哈注册表中的ndlers:



HKCR \ {你的扩展名} - 在这里你可以把信息你的扩展以及它应该如何处理(包括在shell中打开显示等)

实际上我认为你需要添加/更改的主要属性是 ShellEx\ PropertyHandler 默认值是属性处理程序的guid(例如,你可以查看它为MS office文件)



注意:如果你如果没有安装MS Office,则指定办公室处理程序guid然后属性可能不会显示。



与shell扩展相关的信息:注册Shell扩展处理程序 [ ^ ]



问候,

Maxim。
Well, this bcs of your system does not know abt your files.
You should just specify handlers for that in registry:

HKCR\{your extension} - in here you can put the information abt your extension and how it should be handled (including opening displaying in shell and so on)
Actually I think the main property which you require to add/change is ShellEx\PropertyHandler the default value is the guid of property handler (you can look at it for example for MS office files)

Note: if you specify office handler guid then property may not be displayed in case if MS Office not installed.

Information related to shell extensions: Registering Shell Extension Handlers[^]

Regards,
Maxim.


With M axim'的帮助我找出了必要的注册表项来查看OLE复合文档的属性。



这些注册表项解决了这个问题:



With Maxim''s help I figured out the necessary registry entries to see the properties of an OLE compound document.

These registry entries solved that issue:

; For ZipPackages use
; {45670FA8-ED97-4F44-BC93-305082590BFB}  Microsoft XPS Shell Metadata Handler

; For OLE Documents use
; {8d80504a-0826-40c5-97e1-ebc68f953792}  OLE DocFile Property Handler

; Create an entry for the extension of my data files
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.myext]
@="{8d80504a-0826-40c5-97e1-ebc68f953792}"

; Create the file extensions
[HKEY_CLASSES_ROOT\.myext]
@="MyProgram.ProgId.1"

; Create the ProgIds, but without the code!
; NOTE: ProgIds shall not have more than 39 characters!!

[HKEY_CLASSES_ROOT\MyProgram.ProgId.1]
@="My Programs data file"
"InfoTip"="prop:System.ItemType;System.Author;System.Title;System.Subject;System.Comment;System.DateModified;System.Size"
"FullDetails"="prop:System.PropGroup.Description;System.Title;System.Subject;System.Category;System.Keywords;System.Comment;System.PropGroup.Origin;System.Author;System.Document.RevisionNumber;System.Document.DateCreated;System.ApplicationName;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.DateCreated;System.DateModified;System.Size;System.FileAttributes;System.OfflineAvailability;System.OfflineStatus;System.SharedWith;System.FileOwner;System.ComputerName"

; Create the property sheet handlers
[HKEY_CLASSES_ROOT\MyProgram.ProgId.1\shellex\PropertySheetHandlers]
[HKEY_CLASSES_ROOT\MyProgram.ProgId.1\shellex\PropertySheetHandlers\{1f2e5c40-9550-11ce-99d2-00aa006e086c}]
@="Security Shell Extension"
[HKEY_CLASSES_ROOT\MyProgram.ProgId.1\shellex\PropertySheetHandlers\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}]
@="OLE DocFile Property Page"
[HKEY_CLASSES_ROOT\MyProgram.ProgId.1\shellex\PropertySheetHandlers\{883373C3-BF89-11D1-BE35-080036B11A03}]
@="Summary Properties Page"





这些条目显示OLE复合文档的属性。



These entries bring up the properties of OLE compound documents.


这篇关于如何在文件资源管理器中显示OLE Compound Document的详细信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆