在我的NSE中重命名在内容视图中不起作用

时间:2015-02-25 09:01:38

标签: winapi rename shell-extensions

NSE意味着namesapce扩展 (https://msdn.microsoft.com/en-us/library/windows/desktop/cc144095%28v=vs.85%29.aspx

我使用DefView开发了名称空间扩展。

我正在处理FMTID_PropList + PID_PropList_ContentViewModeForBrowse并返回正确的proplist-string。

当我在"内容视图"中浏览我的内容时在Windows资源管理器中,重命名不起作用。

此外,我注意到Windows资源管理器使用"前缀了我的第一列(项目名称)的值:名称:   - 它不会对文件系统中的项目执行此操作。

如何解决上述两个问题?

我复制了以下问题:

https://social.msdn.microsoft.com/Forums/en-US/a88ca56d-542e-46a8-81b4-7c37431ea26a/renaming-in-my-nse-does-not-work-in-content-view?forum=windowsuidevelopment

我遇到了完全相同的问题,但在网络上找不到任何帮助。

1 个答案:

答案 0 :(得分:2)

您正在使用过时的proplist字符串格式。这在Windows XP时代是实际的。从Windows Vista开始,必须使用新格式。您必须使用属性键的规范名称,而不是GUID和PID。这就是为什么Windows不允许用户在内容查看模式下重命名对象的原因。

{b725f130-47ef-101a-a5f1-02608c9eebac} 10等于PKEY_ItemNameDisplay,规范名称为System.ItemNameDisplay。

规范名称之前的

“〜”char具有特殊含义。如果它不存在shell显示标签之前的值。如果System.ItemNameDisplay标签是“Name”。