我正在尝试以编程方式创建文件夹的快捷方式,就像右键单击文件夹->创建快捷方式一样
我正在使用
IShellLink* pShellLink;
IPersistFile* pPersistFile;
//........
hRes = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink,
(LPVOID*)&pShellLink);
//.....
hRes = pShellLink->SetPath(pszTargetfile);
hRes = pShellLink->SetArguments(pszTargetargs);
if (wcslen(pszDescription) > 0)
{
hRes = pShellLink->SetDescription(pszDescription);
}
if (wcslen(pszCurdir) > 0)
{
hRes = pShellLink->SetWorkingDirectory(pszCurdir);
}
if (wcslen(pszIconfile) > 0 && iIconindex >= 0)
{
hRes = pShellLink->SetIconLocation(pszIconfile, iIconindex);
}
hRes = pShellLink->QueryInterface(IID_IPersistFile, (LPVOID*)&pPersistFile);
if (SUCCEEDED(hRes))
{
wcscpy_s(wszLinkfile, pszLinkfile);
hRes = pPersistFile->Save(wszLinkfile, TRUE);
pPersistFile->Release();
}
pShellLink->Release();
//....
之后我得到 XXX.lnk 文件。然后我双击它并看到“打开方式”窗口,而不是重定向到目标文件夹。我在我的 lnk 属性中发现目标类型设置为“文件”而不是“文件夹”(如手动创建快捷方式的情况)
它应该作为符号链接工作,但我需要它作为快捷方式(所以我不使用CreateSymbolicLink)
如何正确地做到这一点?