怎么获取一个快捷方式(.lnk)文件的目标

如何获取一个快捷方式(.lnk)文件的目标?
如何获取一个快捷方式(.lnk)文件的目标?
用VC++实现
有什么类和方法麽?

------解决方案--------------------
#include <shlobj.h>

bool ReadShortcut(LPWSTR lpwLnkFile, LPSTR lpDescFile)
{
bool bReturn = true;
IShellLink *pShellLink;

if(bReturn)
{
bReturn = (CoInitialize(NULL) == S_OK);
if(bReturn)
{
bReturn = CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (void **)&pShellLink) > = 0;
if(bReturn)
{
IPersistFile *ppf;
bReturn = pShellLink-> QueryInterface(IID_IPersistFile, (void **)&ppf) > = 0;
if(bReturn)
{
bReturn = ppf-> Load(lpwLnkFile, TRUE) > = 0;
if(bReturn)
{
pShellLink-> GetPath(lpDescFile, MAX_PATH, NULL, 0);
}
ppf-> Release ();
}
pShellLink-> Release ();
}
CoUninitialize();
}
}
return bReturn;
}

// 测试代码:
char szBuf[MAX_PATH];
ReadShortcut(L "C:\\GLWorld.lnk ", szBuf);
MessageBox(0, szBuf, " ", 0);