怎么获取桌面快捷方式对应的.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;
}

------解决方案--------------------
引用:
给你个我收藏的函数

//inFile是快捷方式文件名
//返回快捷方式所指向的文件名
CString   ExpandShortcut(CString   &inFile)