注册示例 属性 处理程序
Registering Sample Property Handler
所以我从 Windows 7 个 SDK 示例 运行 regsvr32 构建了 RecipePropertyHandler,并注册了我的 PROPDESC 文件。这使我能够在 .recipe
类型的文件上编辑名为 Difficulty
的自定义 属性,在详细信息窗格中有一个三态下拉框,还让我可以选择添加属性 作为资源管理器详细信息视图中的一列。
到目前为止,还不错。但是,我正在尝试按照 this MSDN thread 的说明进行操作,但我看到了一些奇怪的事情。
首先,他们提到的三个注册表项中的 none 正在为我显示。具体来说:
- HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertySchema\
- HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers.食谱
- HKLM\Software\Classes\CLSID{50D9450f-2a80-4f08-93b9-2eb526477d1a} [实际上这是来自Vista SDK,看起来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 可能会将此信息存储在不同的位置。
但是,我确实注意到至少有一个非自定义 属性 支持使用高级搜索查询语法,即 ie9props.propdesc 中定义的 Microsoft.IE.VisitCount
。所以我认为必须有办法做到这一点。当我使用 Advanced Query Syntax 键入 propertyname:value
时,我正在寻找的是资源管理器搜索栏中的蓝色文本。我想如果他们支持在详细信息窗格中自定义编辑 UI,当然如果 属性 是可查询的,它会在资源管理器 UI.
中给我一个小的搜索过滤器
是的,它有效。我不完全确定是什么原因造成的,但现在我至少可以在我的机器上使用它了。我可以使用我的规范名称或助记别名,当我点击冒号字符时,它在资源管理器搜索栏中变为蓝色。
旧线程中提到的注册表位置不是最新的。请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/bb266532(v=vs.85).aspx#prophandlers__installation 以了解截至 Windows 7.
的正确值
所以我从 Windows 7 个 SDK 示例 运行 regsvr32 构建了 RecipePropertyHandler,并注册了我的 PROPDESC 文件。这使我能够在 .recipe
类型的文件上编辑名为 Difficulty
的自定义 属性,在详细信息窗格中有一个三态下拉框,还让我可以选择添加属性 作为资源管理器详细信息视图中的一列。
到目前为止,还不错。但是,我正在尝试按照 this MSDN thread 的说明进行操作,但我看到了一些奇怪的事情。
首先,他们提到的三个注册表项中的 none 正在为我显示。具体来说:
- HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertySchema\
- HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers.食谱
- HKLM\Software\Classes\CLSID{50D9450f-2a80-4f08-93b9-2eb526477d1a} [实际上这是来自Vista SDK,看起来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 可能会将此信息存储在不同的位置。
但是,我确实注意到至少有一个非自定义 属性 支持使用高级搜索查询语法,即 ie9props.propdesc 中定义的 Microsoft.IE.VisitCount
。所以我认为必须有办法做到这一点。当我使用 Advanced Query Syntax 键入 propertyname:value
时,我正在寻找的是资源管理器搜索栏中的蓝色文本。我想如果他们支持在详细信息窗格中自定义编辑 UI,当然如果 属性 是可查询的,它会在资源管理器 UI.
是的,它有效。我不完全确定是什么原因造成的,但现在我至少可以在我的机器上使用它了。我可以使用我的规范名称或助记别名,当我点击冒号字符时,它在资源管理器搜索栏中变为蓝色。
旧线程中提到的注册表位置不是最新的。请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/bb266532(v=vs.85).aspx#prophandlers__installation 以了解截至 Windows 7.
的正确值