windows在c中读取快捷方式文件的目标
发布时间:2020-12-13 20:33:31 所属栏目:Windows 来源:网络整理
导读:如何在Windows上读取快捷方式文件的目标.尝试使用boost :: read_symlink抛出异常,说“文件或目录不是重新分析点”消息. int main(int argc,_TCHAR* argv[]){ try { boost::filesystem::path target = boost::filesystem::read_symlink("c:tmpblobstore_2
如何在Windows上读取快捷方式文件的目标.尝试使用boost :: read_symlink抛出异常,说“文件或目录不是重新分析点”消息.
int main(int argc,_TCHAR* argv[]) { try { boost::filesystem::path target = boost::filesystem::read_symlink("c:tmpblobstore_2.lnk"); cout<<target.string(); } catch(const boost::filesystem::filesystem_error& ex) { cout<<"in catch"<<ex.what(); // prints "the file or directory is not a reparse point" } std::ifstream smbConfStream("c:tmpsym_file_2.lnk"); string ss((std::istreambuf_iterator<char>(smbConfStream)),std::istreambuf_iterator<char>()); cout <<endl<<" ss: "<<ss; // From the output of the "ss" it looks like the information of the target is present inside ss along with other binary data. How to cleanly get the target out. int i; cin>>i; return 0; }
Windows .lnk文件不是符号链接.这是一个快捷方式文件.您使用
IShellLink 接口来操作它.
documentation包含以下示例,演示如何解析快捷方式文件. // ResolveIt - Uses the Shell's IShellLink and IPersistFile interfaces // to retrieve the path and description from an existing shortcut. // // Returns the result of calling the member functions of the interfaces. // // Parameters: // hwnd - A handle to the parent window. The Shell uses this window to // display a dialog box if it needs to prompt the user for more // information while resolving the link. // lpszLinkFile - Address of a buffer that contains the path of the link,// including the file name. // lpszPath - Address of a buffer that receives the path of the link target,including the file name. // lpszDesc - Address of a buffer that receives the description of the // Shell link,stored in the Comment field of the link // properties. #include "stdafx.h" #include "windows.h" #include "shobjidl.h" #include "shlguid.h" #include "strsafe.h" HRESULT ResolveIt(HWND hwnd,LPCSTR lpszLinkFile,LPWSTR lpszPath,int iPathBufferSize) { HRESULT hres; IShellLink* psl; WCHAR szGotPath[MAX_PATH]; WCHAR szDescription[MAX_PATH]; WIN32_FIND_DATA wfd; *lpszPath = 0; // Assume failure // Get a pointer to the IShellLink interface. It is assumed that CoInitialize // has already been called. hres = CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID*)&psl); if (SUCCEEDED(hres)) { IPersistFile* ppf; // Get a pointer to the IPersistFile interface. hres = psl->QueryInterface(IID_IPersistFile,(void**)&ppf); if (SUCCEEDED(hres)) { WCHAR wsz[MAX_PATH]; // Ensure that the string is Unicode. MultiByteToWideChar(CP_ACP,lpszLinkFile,-1,wsz,MAX_PATH); // Add code here to check return value from MultiByteWideChar // for success. // Load the shortcut. hres = ppf->Load(wsz,STGM_READ); if (SUCCEEDED(hres)) { // Resolve the link. hres = psl->Resolve(hwnd,0); if (SUCCEEDED(hres)) { // Get the path to the link target. hres = psl->GetPath(szGotPath,MAX_PATH,(WIN32_FIND_DATA*)&wfd,SLGP_SHORTPATH); if (SUCCEEDED(hres)) { // Get the description of the target. hres = psl->GetDescription(szDescription,MAX_PATH); if (SUCCEEDED(hres)) { hres = StringCbCopy(lpszPath,iPathBufferSize,szGotPath); if (SUCCEEDED(hres)) { // Handle success } else { // Handle the error } } } } } // Release the pointer to the IPersistFile interface. ppf->Release(); } // Release the pointer to the IShellLink interface. psl->Release(); } return hres; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 谁重新启动了我的Windows服务器?
- Windows 7 – Cygwin SSH的目录权限(Windows 7)
- 在Windows下为Matlab编译Shogun工具箱
- windows-phone-7 – 为什么我不能点击/点击Border / Conten
- 如何使用directx 11和Windows 7的硬件加速视频/ H.264解码?
- windows-phone-7 – 如何将图像发送到php web服务?
- anyproxy-windows平台安装和抓手机app上https请求
- 实现插件框架的最佳方式 – DLL是唯一的方法(C/C++项目)?
- windows下安装tesserocr
- Windows运行时 – 什么是WinRT语言预测?
推荐文章
站长推荐
- Windows – Visual Studio 2010 – 如何减少其内
- windows – 使用MinGW编译凭据提供程序
- windows-phone-7 – 市场错误报告中的System.Com
- Window NodeJs安装
- windows-server-2008 – 证书模板缺少“要发布的
- windows-phone-7 – 将麦克风流保存为mp3或wave
- windows-server-2012-r2 – 如何从主DC断开备用D
- wpf – Windows 10中的正版Windows 7主题?
- 在基于Windows的VPS中从Java访问Ubuntu服务器中托
- winapi – 如何让Windows资源管理器在“缩略图”
热点阅读