win7如何创建开始菜单中的快捷方式

时间:2022-01-20 18:30:59
//建立开始菜单快捷方式
if (FAILED(::SHGetFolderPath(NULL, CSIDL_STARTMENU, NULL, SHGFP_TYPE_DEFAULT, link_path))) {
return false;
}
wcscat_s(link_path, _T("\\install.lnk"));
createShortcut(exe_path, working_path, L"开始菜单的", exe_path, link_path);


//createShortcut如下,网上找的
BOOL createShortcut(LPCTSTR pszExePath, LPCTSTR pszWorkingDir, LPCTSTR pszDescription, LPCTSTR pszIconPath, LPCTSTR pszDestinationPath)
{
CoInitialize(NULL);
IShellLink* pShellLink = NULL;

HRESULT hres = NULL;
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLink, (void**)&pShellLink);


if (SUCCEEDED(hres))
{
pShellLink->SetPath(pszExePath);
pShellLink->SetDescription(pszDescription);
pShellLink->SetIconLocation(pszIconPath, 0);
pShellLink->SetWorkingDirectory(pszWorkingDir);

IPersistFile *pPersistFile = NULL;
hres = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);

if (SUCCEEDED(hres))
{
hres = pPersistFile->Save(pszDestinationPath, TRUE);
int aa = GetLastError();
pPersistFile->Release();
WCHAR arr[1024];
swprintf_s(arr, L"%d", aa);
OutputDebugString(arr);
}
else
{
return FALSE;
}

pShellLink->Release();
}
else
{
return FALSE;
}
CoUninitialize();
return TRUE;
}

我一直不能创建出来。我尝试在该路径下用CreateDirectory创建个目录也不行,用GetLastError()判断,CreateDirectory一直返回5  这是什么原因

4 个解决方案

#1


nsis脚本创建很方便啊

#2


我的意思是 会不会是权限问题呢大神?

#3


以管理员模式运行程序试下

#4


管理员模式?是右键 然后选择一管理员模式运行么??我试了  还是不行

#1


nsis脚本创建很方便啊

#2


我的意思是 会不会是权限问题呢大神?

#3


以管理员模式运行程序试下

#4


管理员模式?是右键 然后选择一管理员模式运行么??我试了  还是不行