Vmware Workstation虚拟机不能拖动复制文件到宿主机的Bug原因探究过程

上周末,当我结束工作,准备备份虚拟机中的数据下班时,发现虚拟机突然不能复制文件到宿主机了,但是反向操作却可以,使用了这么久的虚拟机还是第一次遇到这个问题,首先说明下,我的虚拟机是Window Xp SP3系统,Vmware Workstation版本是V14.0,之前都是使用正常,很少出现从虚拟机拖动到宿主机失败的问题。

鉴于以前碰到此类问题的经验,一般都是重新安装下VMTool,基本都能修复此类问题,还有一种方法就是把虚拟机按正常关机流程关机后,在虚拟机设置中勾选"启用拖放"和"启用复制和粘贴",具体方法如下所示:

方法一,重新安装VMTOOL:

方法二,勾选"启用拖放"和"启用复制和粘贴":

其实方法二,还有一个修改VMX配置文件的方法三,在你需要的虚拟机配置文件(.VMX)中添加如下的代码:

复制代码
isolation.tools.copy.disable = "FALSE"
isolation.tools.paste.disable = "FALSE"
isolation.tools.dragAndDrop.disable = "FALSE"
dragAndDrop.enabled = "TRUE"
copyPaste.enabled = "TRUE"

寻找.VMX文件的方法如下:

到如下目录找.VMX后缀结尾的文件,用记事本打开就可以修改,具体我就不再说明了。注意上面的几句代码,请不要和原本的.VMX文件中的代码重复,不然会报错,修改前请备份下.VMX文件,请注意一切操作请在关闭虚拟机的情况下操作。

我尝试了上面的方法,但是遇到了一些问题,现在也把方法和过程记录下来,给大家一个参考,首先就是重装VMTOOL工具的问题,提示"安装软件包时出错,Windows Installer返回"1601"。"

如图:

查询了下AI,提示我可能是Windows Installer的版本需要升级到4.5,注意这是一个小坑,我在其他电脑里的xp虚拟机测试了,Windows Installer版本是3.01

测试Windows Installer版本的方法如下:

cmd输入的命令如下:

复制代码
msiexec /?

运行上面的命令后,会弹出一个Windows Installer的对话框,顶部就有版本号。

上面的版本号是我在能正常安装VMTool工具的XP虚拟机得到的,但是在出问题的XP虚拟机运行上面的命令,不能弹出任何窗口,在C:\Windows\System32中能查找msiexec.exe程序,右键属性可查看版本号为4.5,如下:

根据"安装软件包时出错,Windows Installer返回"1601"。"这个错误提示,我以为是Windows Installer没有启动,在计算机-右击-管理-服务-找到Windows Installer,显示状态停止,如图:

设置成自动,并点击启动,报错如下:

我在正常的xp虚拟机中查看此服务,也是停止状态,但是能够手动启动,如下图:

静下心来,思考了下,虽然现在不能确定重装VMTool后能否解决复制问题,但是这个Windows Installer必然是要修复下,不然之后在XP虚拟机上安装程序或需要修复VMTool时,还是需要解决这个问题。既然想明白这点,我们就直接把Windows Installer修复下,先看下最新的xp可用的Windows Installer版本,发现为Windows Installer 4.5,但是微软官方已不提供下载包了,大家可以看下这个微软说明网页

https://support.microsoft.com/zh-cn/topic/windows-installer-4-5-%E5%B7%B2%E6%8E%A8%E5%87%BA-bf06be18-3e0a-d5eb-4549-b482f67e1c46https://support.microsoft.com/zh-cn/topic/windows-installer-4-5-%E5%B7%B2%E6%8E%A8%E5%87%BA-bf06be18-3e0a-d5eb-4549-b482f67e1c46点击"[资产 4009805]立即下载 Windows Installer 4.5。"提示404错误,如下:

搜索了下链接中提到的XP SP2和SP3可用的 WindowsXP-KB942288-v3-x86.exe补丁文件,发现微软官方的补丁服务器上只提供一个Windows2003系统的X86补丁,不能运行在XP SP3上,经过查找,只能在第三方的平台下了个,链接如下:

https://legacyupdate.net/download-center/download/8483/windows-installer-4.5-redistributablehttps://legacyupdate.net/download-center/download/8483/windows-installer-4.5-redistributable

下载后,把它复制到XP虚拟机中(因为我的情况是宿主机能复制到虚拟机,如果你不能复制,请使用U盘或共享文件复制到虚拟机),运行安装,安装前我先查看了原来是否安装过这个补丁(KB942288),发现早就安装过了,可能因为某些情况损坏了(事后回忆,前两天可能开启过WINXP的自动更新功能,不知道是不是这个原因-_-!)

然后我右键补丁包查看了下微软的证书是否正常后,直接安装了,如下:

点击同意

点击同意后,并没有直接安装,而是说我们的Window Installer正在运行,可能是之前尝试安装VMTool时开启的,我们在任务管理器中,右键结束进程,如下图:

结束进程后,点击继续,就能正常安装了,如下图:

点击完成后,会重启系统。启动系统后,我们在cmd中再次运行msiexec /?命令,发现Window Installer能正常显示版本了,在服务中运行Window Installer,也能开启了,如下图:

然后我们重新安装下VMTool试试,发现能正常运行安装程序了。如下:

我们继续安装看看,因为我们之前安装过,所以点击修复,发现能修复成功了,如下:

修复后点击是,会自动重启下,如下图:

重新启动后,我尝试了下,之前不能复制的问题,并没有解决,看来还不是这个问题。

我停下来回忆了下,这个问题也就今天才出现,显然是最近的某些操作导致了,而昨天我刚刚用,自己写的清理垃圾批处理程序,清理过temp文件夹的垃圾,而虚拟机复制操作可能需要通过temp文件夹临时转存下文件,而且我运行了本机的其他虚拟机也同样毛病,显然不是虚拟机内部的temp文件问题,而是宿主机的temp文件出问题了,我按Win+R快捷键打开运行,并输入%temp%,打开临时文件夹,确实有VM虚拟机的临时文件夹(在vmware-用户名,我的计算机名是VIP,所以是vmware-vip,请以你自己的名称为准,这个文件夹如果彻底清理过,需要重新打开下vm软件才能生成,最后我会说明这个bug的原因),如下图:

打开这个vmware-xxx文件夹后,可以看到里面有很多VM虚拟机的log日志文件,

我点击了修改日期,排序了下,把最近的一个log文件放到顶部,也就是上图中的vmware-ui-3912.log,打开后,下拉到最后,发现了问题的根源所在,如下图:

可以看到我蓝色选中的部分,就是这个vmware-xxx目录下还有一个文件夹,我的是VMwareDND文件夹,如下图(可以看到最下面的VMwareDND文件夹):

这个VMwareDND文件夹负责把虚拟机复制或拖动出的文件,暂时存放在这个VMwareDND的子文件夹中,但是日志中的报错信息显示,没有这个VMwareDND文件夹的读写权限,我们用文件浏览器打开这个文件夹试试,发现确实需要授权(我当时尝试时,没有截图,大家打开文件夹后,点击允许访问就行),允许后就能直接进入文件夹了,可以看到里面的子文件夹,如下图:

打开子文件夹,就能看到我们之前复制的文件了,我这里只是做一个例子,说明这个文件夹的作用,实际如果大家碰到这种情况,可能是没有fa645a2c这样的随机名称文件夹的,因为没有权限写入,所以VMwareDND是空的,要解决这个问题,我们只有授权VMwareDND读写权限就行。

问题是解决了,但是造成的原因我也想探究下,所以我关闭虚拟机后,重新运行了下,我的清理批处理程序,发现问题并没有复现,还是能正常复制,我怀疑可能是当时运行批处理后,导致文件夹的sid权限错乱了,这样虚拟机软件没有权限写入这个临时文件,因为我当时运行批处理时,虚拟机是开启状态,所以导致的冲突,我又测试了一遍,清理这个temp文件夹时,同时开启着虚拟机,接着把虚拟机关闭,重启电脑,进入系统后,测试虚拟机,发现果然不能拖动了,但是能复制黏贴。

最终解决的方法也很简单,关闭或挂起虚拟机,关闭vm软件,确认关闭vm虚拟机软件后,再运行清理temp文件,重启电脑后,就能修复拖动和复制的问题。

回想以前有时莫名出现的这类问题,可能就是因为开启着虚拟机清理垃圾导致的,过了这么多年,终于找到原因了,希望对大家以后碰到这类问题有帮助,谢谢观看,再见!

最后放一张拖动成功的图片,如下:

相关推荐
peng_YuJun7 天前
openEuler 虚拟机从零到一:完整部署指南
linux·运维·服务器·vmware·openeuler
来自天蝎座的孙孙8 天前
安装Windows11 Canary 预览版虚拟机
电脑·vmware·windows11
一名爱学习的ikun9 天前
VMware 虚拟机设置成静态IP后无法联网
网络·vmware
BHXDML10 天前
VMware Workstation Pro 安装详细教程(超详细图文讲解)
linux·虚拟机
sanqima10 天前
在VMware Workstation 15 Player里的虚拟机里,安装VMware Tools插件
vmware·虚拟机
xcLeigh11 天前
打破机房围墙:VMware+cpolar构建跨网络虚拟实验室
vmware·内网穿透·cpolar·实验室·远程访问·1024程序员节
浣熊88812 天前
天机学堂虚拟机静态ip无法使用(重启后ip:192.168.150.101无法使用连接Mobaxterm数据库等等,或者无法使用修改之后的Hosts域名去访问nacos,jenkins)
java·微服务·虚拟机·天机学堂·重启之后静态ip用不了
吴家健ken17 天前
安装VirtualBox在D
虚拟机
来自天蝎座的孙孙18 天前
安装VMware Workstation Pro 25H2/17.6.4
vmware
懒神降世19 天前
基于iVentoy的PXE服务器的部署实战指南
运维·服务器·开发语言·云原生·vmware·openeuler·iventoy