如何在VirtualBox虚拟机中读取Windows快捷方式指向的文件内容?
如何在VirtualBox虚拟机中通过Windows快捷方式(.lnk)访问目标文件内容
当然可以,但你得先明白:Windows的.lnk文件不是实际的文本文件,它只是一个包含目标文件路径等元数据的二进制快捷方式,所以直接用cat读取.lnk文件本身只会得到一堆乱码,而不是你要的文本内容。下面是具体的解决方法:
方法一:用Linux工具解析.lnk文件
大多数Linux发行版都有可以解析Windows快捷方式的工具,以Debian/Ubuntu系为例:
安装解析工具
打开终端,执行以下命令安装liblnk-utils:sudo apt update && sudo apt install liblnk-utils查看.lnk指向的目标路径
用lnkinfo命令解析你的快捷方式文件,获取它指向的实际Windows路径:lnkinfo /media/sf_vagrant/my_text.lnk输出里会有类似
Path: C:\Users\YourWinUser\Documents\real_text_file.txt的内容,这就是快捷方式对应的实际文件路径。转换路径并访问文件
把Windows路径转换成虚拟机共享目录对应的Linux路径。比如你的共享目录/media/sf_vagrant映射的是Windows的C:\Users\YourWinUser\Documents,那实际文件在虚拟机里的路径就是/media/sf_vagrant/real_text_file.txt,直接用cat读取即可:cat /media/sf_vagrant/real_text_file.txt
方法二:用Python脚本解析(更灵活)
如果你的系统里没有现成的工具,或者需要批量处理,用Python的pylnk3库也能轻松解析:
安装
pylnk3pip install pylnk3编写简单的解析脚本
创建一个parse_lnk.py文件,内容如下:import pylnk3 import sys if len(sys.argv) != 2: print("Usage: python parse_lnk.py <path_to_lnk_file>") sys.exit(1) lnk_path = sys.argv[1] try: lnk = pylnk3.parse(lnk_path) target_path = lnk.path print(f"Target file path (Windows): {target_path}") # 自动转换为共享目录路径(根据你的实际共享映射修改路径替换规则) linux_path = target_path.replace("C:\\Users\\YourWinUser\\Documents", "/media/sf_vagrant").replace("\\", "/") print(f"Target file path (Linux): {linux_path}") # 直接读取内容 with open(linux_path, 'r') as f: print("\nFile content:") print(f.read()) except Exception as e: print(f"Error: {e}")运行脚本
python parse_lnk.py /media/sf_vagrant/my_text.lnk脚本会自动解析路径并输出文件内容。
注意事项
- 如果.lnk指向的是Windows系统中未被共享到虚拟机的目录,那虚拟机里是无法访问该文件的,因为VirtualBox共享目录只映射了你指定的文件夹。
- 不同Linux发行版的解析工具包名可能不同,比如CentOS/RHEL可能需要从EPEL源安装或手动编译
liblnk。
内容的提问来源于stack exchange,提问作者malat
相关产品推荐
相关产品推荐

