修改快捷方式所连接源文件的路径

快捷方式包括桌面快捷方式和开始菜单快捷方式,其所链接的源文件路径都可以通过该方式修改,修改后的效果表现为如下截图中目录这一栏值的更改。

bool CrnModifyShortcutArguments(LPCWSTR lpszLnkFilePath, LPCWSTR strArguments)
{
	//判断文件是否存在
	bool bResult = (CoInitialize(NULL) == S_OK);
	if (bResult)
	{
		IShellLink *pShellLink;
		//创建IShellLink对象
		bResult = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
			IID_IShellLink, (void **)&pShellLink) >= 0;

		if (!bResult)
			return false;

		//从IShellLink对象中获取IPersistFile接口
		IPersistFile *ppf;
		bResult = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf) >= 0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}	
		//加载快捷方式文件
		bResult = ppf->Load(lpszLnkFilePath, TRUE) >= 0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}
		//修改快捷方式文件参数
		bResult = pShellLink->SetPath(strArguments) >=0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}
		//重新保存快捷方式文件
		bResult = ppf->Save(lpszLnkFilePath, TRUE) >= 0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}

		ppf->Release();
		pShellLink->Release();
		CoUninitialize();
	}

	return bResult;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章