怎么获取桌面快捷方式对应的.exe文件所在的路径呢
如何获取桌面快捷方式对应的.exe文件所在的路径呢?
现在程序是桌面程序,上位机程序,有的功能需要更新下,但是目前软件中有的配置文件等等想保留,如果卸载掉,然后安装,这样之前的一些配置文件等都没有了, 所以想个办法,采用替换.exe文件的方式,但是不知道如何根据桌面快捷方式,获取.exe文件所在的路径,所以没法子替换了,望哪位高手指点,谢谢!
------解决方案--------------------
给你个我收藏的函数
------解决方案--------------------
现在程序是桌面程序,上位机程序,有的功能需要更新下,但是目前软件中有的配置文件等等想保留,如果卸载掉,然后安装,这样之前的一些配置文件等都没有了, 所以想个办法,采用替换.exe文件的方式,但是不知道如何根据桌面快捷方式,获取.exe文件所在的路径,所以没法子替换了,望哪位高手指点,谢谢!
------解决方案--------------------
给你个我收藏的函数
//inFile是快捷方式文件名
//返回快捷方式所指向的文件名
CString ExpandShortcut(CString &inFile)
{
CString outFile = _T(" ");
// Make sure we have a path
ASSERT(inFile != _T( ""));
IShellLink* psl;
HRESULT hres;
LPTSTR lpsz = inFile.GetBuffer(MAX_PATH);
// Create instance for shell link
hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl);
if (SUCCEEDED(hres)) {
// Get a pointer to the persist file interface
IPersistFile* ppf;
hres = psl-> QueryInterface(IID_IPersistFile, (LPVOID*) &ppf);
if (SUCCEEDED(hres)) {
// Make sure it 's ANSI
#ifndef _UNICODE
wchar_t wsz[MAX_PATH];
::MultiByteToWideChar(CP_ACP, 0, lpsz, -1, wsz, MAX_PATH);
// Load shortcut
hres = ppf-> Load(wsz, STGM_READ);
#else
hres = ppf-> Load(lpsz, STGM_READ);
#endif
if (SUCCEEDED(hres)) {
WIN32_FIND_DATA wfd;
// find the path from that
HRESULT hres = psl-> GetPath(outFile.GetBuffer(MAX_PATH),
MAX_PATH,
&wfd,
SLGP_UNCPRIORITY);
outFile.ReleaseBuffer();
}
ppf-> Release();
}
psl-> Release();
}
inFile.ReleaseBuffer();
// if this fails, outFile == " "
return outFile;
}
------解决方案--------------------