SHChangeNotifyRegister->SHCreateItemFromIDList->IShellItem2 在 SHCNE_CREATE 上没有 FILETIME 信息?

SHChangeNotifyRegister->SHCreateItemFromIDList->IShellItem2 has no FILETIME information on SHCNE_CREATE?

给定 SHChangeNotifyRegister() 文件夹,通过 SHCNE_CREATE 正在监视和检测新项目,并使用 SHCreateItemFromIDList()PIDL 转换为 IShellItem2尝试 IShellItem2::GetFileTime(PKEY_DateCreated, &createtime); 失败并显示 ERROR_NOT_FOUND(未找到元素)。如果我尝试 PKEY_DateModified,也一样。怎么可能?有没有办法包含日期(调试中断显示文件已经存在,可以在 windows 资源管理器中看到并且有一个 date/time)。是否还有其他事情要做或它不传递该信息? IShellItem2::GetDisplayName() 工作正常。这是 Win10 x64?

TIA!!

当 PIDL 仅包含名称而没有其他信息时,您正在查看一个简单的项目。这些由 SHSimpleIDListFromPath 当更改通知程序仅知道路径或者如果通知程序在创建 PIDL 时在绑定上下文中使用空查找信息时生成。

您唯一的选择是打盘并填写新的 PIDL。在通用 shell 命名空间中,这意味着要求 IShellFolder 解析显示名称。 IShellItem2::Update 可能会为你做这个,文档没有说明它是否对简单的项目有效。