You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Quick Access对应的IShellItem?所用GUID是否正确?

你遇到的0x80070057错误码对应E_INVALIDARG(参数无效),并非你用的GUID错误,而是SHCreateItemFromParsingName的路径格式不符合快速访问的Shell解析规则。

问题原因

此电脑的CLSID是Windows早期版本就存在的核心虚拟项,Shell解析器对它的::{GUID}裸路径格式做了向后兼容,所以可以正常解析。而快速访问是Windows 10才新增的虚拟Shell项,解析时要求路径必须带shell:::协议前缀,否则会被判定为无效路径。

修复方案

方案1:补充协议前缀(适配你现有写法)

SHCreateItemFromParsingName(L"shell:::{679F85CB-0220-4080-B29B-5540CC05AAB6}", NULL, IID_PPV_ARGS(&psi));

方案2:更推荐的官方接口写法(兼容性更强,无需拼接路径)

直接通过SHGetKnownFolderItem获取快速访问的IShellItem,不需要硬编码路径,适配不同Windows版本:

#include <KnownFolders.h>
#include <ShlObj.h>
#pragma comment(lib, "Shell32.lib")

IShellItem* psi = nullptr;
HRESULT hr = SHGetKnownFolderItem(FOLDERID_QuickAccess, KF_FLAG_DEFAULT, NULL, IID_PPV_ARGS(&psi));
if (SUCCEEDED(hr))
{
    // 此处执行你的业务逻辑
    psi->Release();
}

内容的提问来源于stack exchange,提问作者herb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:15:01