1

因此,我从 Windows 7 SDK 示例构建了 RecipePropertyHandler,运行了 regsvr32,并注册了我的 PROPDESC 文件。这使我能够编辑名为Difficulty的文件类型的自定义属性.recipe,并在详细信息窗格中使用三态下拉框,还可以选择将该属性添加为资源管理器详细信息视图中的列。

到目前为止,一切都很好。但是,我正在尝试按照此 MSDN 线程的说明进行操作,但我看到了一些奇怪的事情。

首先,他们提到的三个注册表项都没有显示给我。具体来说:

  1. HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertySchema\
  2. HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers.recipe
  3. HKLM\Software\Classes\CLSID{50D9450f-2a80-4f08-93b9-2eb526477d1a} [实际上这是来自 Vista SDK,看起来 CLSID 已更改,但新的 CLSID 也不在注册表中。]

他们在另一个线程上提到了一个 .reg 文件,但我认为它不再那样工作了。对于它的价值,我确实在HKEY_CLASSES_ROOT\.recipe. 我还可以使用 prop.exe 实用程序查看已安装的属性,如下所示:

C:\tools>prop.exe schema describe Microsoft.SampleRecipe.Difficulty
Microsoft.SampleRecipe.Difficulty
----------------------------------
Property Key:          {1794C9FE-74A9-497F-9C69-B31F03CE7EF9} 100
Canonical Name:        Microsoft.SampleRecipe.Difficulty
Property Type:         VT_LPWSTR
Display Name:          Recipe difficulty
Edit Invitation:       Specify recipe difficulty
Type Flags:            PDTF_CANGROUPBY | PDTF_CANSTACKBY | PDTF_ISVIEWABLE | PDTF_ISQUERYABLE
View Flags:
Default Column Width:  20
Display Type:          PDDT_ENUMERATED
Column State:          SHCOLSTATE_TYPE_STR
Grouping Range:        PDGR_ENUMERATED
Relative Desc. Type:   PDRDT_GENERAL
Sort Description:      PDSD_A_Z
Sort Desc. Labels:     A on top/Z on top
Aggregation Type:      PDAT_DEFAULT
Condition Type:        PDCOT_STRING
Condition Operation:   COP_WORD_EQUAL
Enumerated Types:      4
  0 PET_DISCRETEVALUE: Easy            VT_LPWSTR/[Easy]
  1 PET_DISCRETEVALUE: Medium          VT_LPWSTR/[Medium]
  2 PET_DISCRETEVALUE: Hard            VT_LPWSTR/[Hard]
  3 PET_DISCRETEVALUE: Really, Really Hard VT_LPWSTR/[ReallyReallyHard]
Search Info Flags:     PDSIF_ISCOLUMN | PDSIF_ISCOLUMNSPARSE
Column Index Type:     PDCIT_ONDISK
Projection String      Microsoft.SampleRecipe.Difficulty
Max Size:              512

无论如何,主要问题是,我是否不能在 Windows 资源管理器搜索 UI 中使用其规范名称或助记符名称来查询此属性?这似乎对我不起作用,从另一个线程中也不清楚它是否受支持。不过,Vista 和 Windows 7 可能会将这些信息存储在不同的位置。

但是,我确实注意到至少有一个使用高级搜索查询语法支持的非自定义属性,即Microsoft.IE.VisitCount在 ie9props.propdesc 中定义的。所以我认为必须有办法做到这一点。当我propertyname:value使用Advanced Query Syntax键入时,我正在寻找的是资源管理器搜索栏中的蓝色文本。我想他们是否支持“详细信息”窗格中的自定义编辑 UI,如果该属性是可查询的,它肯定会给我在资源管理器 UI 中的一个小搜索过滤器。

4

1 回答 1

0

是的,它有效。我不完全确定它是做什么的,但现在我至少可以在我的机器上运行它了。我可以使用我的规范名称或助记符别名,当我点击冒号字符时,它在 Explorer 搜索栏中变为蓝色。

旧线程中提到的注册表位置不是最新的。有关 Windows 7 的正确值,请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/bb266532(v=vs.85).aspx#prophandlers__installation

于 2015-06-25T18:56:52.003 回答