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

Winapi 在“我的NSE”中重命名在“内容”视图中不起作用,winapi,rename,shell-extensions,Winapi,Rename,Shell Extensions,NSE表示名称空间扩展 () 我使用DefView开发了一个名称空间扩展 我正在处理FMTID_PropList+PID_PropList_ContentViewMode以进行浏览并返回正确的PropList字符串 在Windows资源管理器的“内容视图”中浏览nse时,重命名不起作用 此外,我注意到Windows资源管理器在我的第一列(即项目名称)的值前面加上“名称: -它不会对文件系统中的项执行此操作 如何解决上述两个问题 我抄袭了以下问题: 我遇到了完全相同的问题,在web上找不到任何帮

NSE表示名称空间扩展 ()

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

我正在处理FMTID_PropList+PID_PropList_ContentViewMode以进行浏览并返回正确的PropList字符串

在Windows资源管理器的“内容视图”中浏览nse时,重命名不起作用

此外,我注意到Windows资源管理器在我的第一列(即项目名称)的值前面加上“名称: -它不会对文件系统中的项执行此操作

如何解决上述两个问题

我抄袭了以下问题:


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

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

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


规范名称之前的“~”字符具有特殊含义。如果不存在,则shell将在值之前显示标签。如果是System.ItemName,则显示标签为“name”。

什么意思“不起作用?”"? 您的商品是否宣传了
SFGAO\u CANRENAME
属性?您是否实现了IShellFolder::SetNameOf?它被调用了吗?我的意思是它在任何其他视图中都有效。只有内容视图没有做任何事情。重命名已启用。SetNameOf()未被调用,如前所述,它确实在其他视图(即平铺、图标..)中被调用。第一列的PKEY是什么?如何创建对象的IContextMenu?使用CDefFolderMenu_Create2或SHCreateDefaultContextMenu或您自己的实现?当shell调用BindToObject时,是否返回IPropertyStore/IPropertyStoreFactory实现?我不确定PKEY。我使用的是按索引的列,中继到getDetailsSof()。我正在实现自己的Derived ContextMenu,并将其注入IOC的项目中。在BindToObject()中,我使用的是Marshal.GetComInterfaceForObject()。将proplist字符串替换为“prop:~System.ItemNameDisplay”