#include <Windows.h>
#include <iostream>
#include <ShObjIdl.h>
// 使用Com接口,读取链接目标路径
HRESULT LoadLinkFilePath(const wchar_t* file, wchar_t* buf, int maxbuf)
{
IShellLinkW* shlink = 0;
IPersistFile* persist = 0;
WIN32_FIND_DATA wfd;
HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (void**)&shlink);
if (SUCCEEDED(hr)) {
hr = shlink->QueryInterface(IID_IPersistFile, (void**)&persist);
if (SUCCEEDED(hr)) {
hr = persist->Load(file, STGM_READ);
if (SUCCEEDED(hr)) {
// shlink->Resolve(0, SLR_ANY_MATCH | SLR_NO_UI);
hr = shlink->GetPath(buf, maxbuf, &wfd, SLGP_RAWPATH);
}
persist->Release();
}
shlink->Release();
}
return hr;
}
int wmain(int argc, wchar_t* argv[])
{
_wsetlocale(LC_ALL, L"");
if (argc < 2) {
return -1;
}
CoInitialize(0);
wchar_t buf[260] = { 0 };
HRESULT hr = LoadLinkFilePath(argv[1], buf, 260);
wprintf(L"%ls", buf);
CoUninitialize();
return hr;
}
VC 读取windows .lnk快捷方式路径
最新推荐文章于 2023-08-25 16:15:59 发布