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
管理员模式?是右键 然后选择一管理员模式运行么??我试了 还是不行