【发布时间】:2018-05-10 20:15:04
【问题描述】:
我正在尝试使用 COM 获取所有应用程序的安装位置。我能够获得每个应用程序的显示名称。但我无法获得每个应用程序的安装路径。
我的代码:
CComPtr<IShellItem> spPrinters;
CoInitialize(nullptr);
HRESULT hresult = ::SHCreateItemFromParsingName(L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\8\\"
L"::{7B81BE6A-CE2B-4676-A29E-EB907A5126C5}", nullptr, IID_PPV_ARGS(&spPrinters));
CComPtr<IEnumShellItems> spEnum;
spPrinters->BindToHandler(nullptr, BHID_EnumItems, IID_PPV_ARGS(&spEnum));
for (CComPtr<IShellItem> spProgram; spEnum->Next(1, &spProgram, nullptr) == S_OK; spProgram.Release())
{
CComHeapPtr<wchar_t> spszName;
spProgram->GetDisplayName(SIGDN_NORMALDISPLAY, &spszName);
CString cDisplayName = spszName;
}
知道如何从 IEnumShellItems 获取安装路径。
感谢您的建议。
【问题讨论】:
-
安装路径是指(可选)“位置”列吗?
-
是的;我想获取位置。
标签: visual-c++ com