如何将主机文件复制到VirtualBox中的Windows客户操作系统?

时间:2014-11-06 11:09:22

标签: windows virtualbox

我已经使用xdissent/ievms在我的Mac上的VirtualBox中设置了多个Windows来宾操作系统。

我想在每个Windows VM的hosts文件中添加条目。我可以成功地将hosts文件从Windows客户操作系统复制到我的Mac:

VBoxManage guestcontrol "IE9 - Win7" copyfrom "C:\\Windows\\system32\\drivers\\etc\\hosts" ~/Desktop/hosts --username IEUser --password Passw0rd\!

在我的Mac上,我还可以使用echo -e "blah blah\r\n" >> hosts成功地将条目添加到复制的文件中。

但是我还没有能够将修改后的文件复制回Windows客户操作系统上的正确位置。我可以将其复制到Windows桌面,但如果我尝试将其复制到正确的文件夹,我会得到:

VBoxManage guestcontrol "IE9 - Win7" copyto ~/Desktop/hosts "C:\\Windows\\system32\\drivers\\etc\\hosts"    --username IEUser --password Passw0rd\!  --verbose
Opening guest session as user 'IEUser' ...
Waiting for guest session to start ...
Guest session (ID 1) has been started
Copying from host to guest ...
Directory "." already exists
Source: /Users/andy/Desktop/hosts
Copying "/Users/andy/Desktop/hosts" to "./C:\Windows\system32\drivers\etc\hosts" ...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...
Progress state: VBOX_E_IPRT_ERROR
VBoxManage: error: Copying file "/Users/andy/Desktop/hosts" failed with status 500, exit code 1.
VBoxManage: error: Error processing "/Users/andy/Desktop/hosts", rc=VERR_GENERAL_FAILURE
Closing guest session ...

接下来,我尝试将我成功复制到Windows桌面的文件移动到正确的文件夹:

VBoxManage guestcontrol "IE9 - Win7" mv "/Documents and Settings/IEUser/Desktop/hosts" "/Windows/System32/drivers/etc/hosts2"  --username IEUser --password Passw0rd\!  --verbose
Opening guest session as user 'IEUser' ...
Waiting for guest session to start ...
Guest session (ID 1) has been started
Renaming 1 entry ...
Renaming file "/Documents and Settings/IEUser/Desktop/hosts" to "/Windows/System32/drivers/etc/hosts2" ...
VBoxManage: error: Renaming guest file failed: VERR_ACCESS_DENIED
VBoxManage: error: Details: code VBOX_E_IPRT_ERROR (0x80bb0005), component GuestSession, interface IGuestSession, callee nsISupports
VBoxManage: error: Context: "FileRename(Bstr(strCurSource).raw(), Bstr(strCurDest).raw(), ComSafeArrayAsInParam(aRenameFlags))" at line 3015 of file VBoxManageGuestCtrl.cpp
Warning: Not all sources were renamed
Closing guest session ...

线索似乎是VERR_ACCESS_DENIED,即权限问题。

IEUser用户已设置为管理员,因此我无法理解为何无法写入etc目录。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

VBoxManage guestcontrol并不总是易于使用。如果您使用ievms框,则可以使用gem ievms-ruby提供的cli实用程序ievmsrb。要使用ievmsrb将文件复制到来宾计算机,请输入:

$ ievmsrb copy_to_as_adm "IE9 - Win7" ~/Desktop/hosts 'C:\Windows\System32\Drivers\Etc\hosts'

由于C:\Windows\System32\Drivers\Etc\hosts只能由管理员写入,因此您必须使用copy_to_as_adm命令。

使用

检查是否已成功复制
ievmsrb cat "IE9 - Win7"  'C:\Windows\System32\Drivers\Etc\hosts'

答案 1 :(得分:0)

要将复制到虚拟机,您应该使用 copyto 而不是copyfrom。

答案 2 :(得分:0)

不要指定完整的目标路径,它将放在c:\ windows \ system32文件夹中(假设您以管理员身份进行连接)。

然后你可以使用" ren"子命令将文件移动到' drivers \ etc \ hosts' (假设您先移除原件。)

实施例

VBoxManage guestcontrol" $ inputVMID" cp" $ tFile" ' hosts.new' - 用户名管理员 - 密码*** --verbose

接下来是:

删除原始文件

VBoxManage guestcontrol" $ inputVMID" rm' drivers \ etc \ hosts' - 用户名管理员 - 密码** --verbose

最后

重命名新主机文件

VBoxManage guestcontrol" $ inputVMID" ren' hosts.new' ' drivers \ etc下\主机' - 用户名管理员 - 密码* --verbose

HTH