一个关于Shell的问题。
我想向开始菜单的启动项里添加一个程序,但下面代码总是失败:
char szShortcutPath[MAX_PATH];
IShellLink* pShellLink=NULL;
SHGetSpecialFolderPath(NULL,szShortcutPath,CSIDL_STARTUP,false);
CoInitialize(NULL);
HRESULT hr=CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,
IID_IShellLink,(LPVOID*)&pShellLink);
if(SUCCEEDED(hr))
{
hr=pShellLink->SetPath("e:\\test.exe");
IPersistFile* ppf=NULL;
hr=pShellLink->QueryInterface(IID_IPersistFile,(LPVOID*)&ppf);
if(SUCCEEDED(hr))
{
wchar_t szW[MAX_PATH];
MultiByteToWideChar(CP_ACP,0,szShortcutPath,
-1,szW,MAX_PATH);
hr=ppf->Save(szW,true); //这里总是失败
ppf->Release();
}
pShellLink->Release();
}