有没有一种干净的方法来获得对Windows下物理分区的独占访问权?


11

我正在尝试在Windows 7下从物理分区上安装的OS使用VMWare Player运行虚拟机。但是,当我启动虚拟机时,VMWare Player说它无法访问物理驱动器进行写入。

这似乎是VMWare社区中一个公认的问题,因为Windows Vista 引入了一种引人注目的新安全功能,该功能使无法在不首先获得对其原始访问权限的情况下写入原始驱动器。

我已经用Google搜索这个问题,发现了一些解决方法。但是,干净 磁盘似乎只能在整个物理磁盘上运行,而不能在分区上运行。

所以我会留下肮脏的解决方案。简而言之,它与MBR结合在一起以擦除要使用的分区的任何痕迹,使Windows忘记它们,然后还原MBR,以便我们可以启动VM。

我不确定要这么做。有没有一种方法可以让VMWare获得对该分区的独占访问权,而无需我放弃它?我想寻找的是一种使分区脱机而不是整个物理驱动器脱机的方法。


与赏金相关的更多信息

我有一个双重启动设置:Mac OS是我的主要操作系统,并且我也安装了Windows。如果我不想重新引导,我可以在虚拟机中运行Windows,但我希望能够在Windows下在虚拟机中运行Mac OS。

我的目标是从Windows下的VMWare运行我的主要Mac OS分区,就像我从VMWare Fusion中运行Windows一样。(由于这是我的主要操作系统,因此我不打算修补内核或进行任何其他操作以使其在虚拟机中运行。)我从VMWare Fusion创建了虚拟机(因为它具有“ Mac OS X Server” VM类型) ),然后将其移至Windows并从VMWare Player中对其进行修改。似乎几乎可以正常工作,因为OS进入加载屏幕,然后VM因无法访问而死掉\\.\PhysicalDrive0

Virtual Box失败的难度更大,因为它以详细模式启动Mac OS并崩溃极快(但似乎能够访问该分区),所以我认为让VMWare访问我的分区比让Virtual Box运行要容易得多它。

从法律的角度来看,我将在一台带有Apple标签的计算机上运行Mac OS X的一个副本,所以我很好。


有趣的问题。如果创建一个空白的,未格式化的分区,是否可以正常工作?
nhinkle 2010年

@nhinkle我没有任何备用分区空间可以在内部驱动器上进行测试。但是,据我看来,Windows会锁定它可以识别的任何分区。并且我可以确认它仍然会锁定那些没有安装点的设备。
zneak 2010年

@zneak:过去我曾使用TrueCrypt解决Windows限制。由于它具有自己的磁盘驱动程序,因此它可以写入磁盘。为什么不尝试将分区变成TrueCrypt虚拟磁盘?
harrymc

@harrymc我没试过。我需要加密我的Mac OS分区吗?
zneak 2011年

您将需要在分区上创建TrueCrypt卷(丢失所有内容)。可能有助于显示方式,但另请参见TrueCrypt帮助。
harrymc

Answers:


5

我只遇到了一种可能的解决方案,将免费的虚拟磁盘驱动器imdisk与devio一起使用(远程驱动器访问和获取)。由于imdisk是内核驱动程序,因此它可能能够写入分区。不幸的是,由于devio在用户模式下工作,因此我不太确定这种方法是否对您有用。

devio可以获取物理分区并将其发布到网络上。例如:

devio -r 9000 \\.\PhysicalDrive0 2

确实从第一个磁盘发布TCP端口9000上的第二个分区,并且将等待该端口上的连接。在测试时最好禁用防火墙,并以管理员身份运行devio。

要将发布的分区定义为新的独立硬盘,请使用:

imdisk -a -t proxy -o ip -f 127.0.0.1 -m R:

使用本地主机将创建一个名为R的新硬盘,该硬盘不包含任何内容。现在,您可以尝试是否可以在VMware虚拟机中使用假装的真实硬盘R。

Devio:远程驱动器访问和获取》中详细介绍了此方法。

如果这不起作用,您将必须:

  1. 接受修改MBR的危险解决方案。
  2. 放弃在Win7中将MacOS用作VM,通过Windows应用程序在Mac分区中使用文件(出现行尾字符问题)。
  3. 使用虚拟文件系统产品,例如ELDOS回调文件系统,尽管我怀疑这个问题对您来说价值几千美元。
  4. 放弃Windows 7并降级为XP。
  5. 修改imdisk源,以便作为内核驱动程序将直接在物理分区上创建一个伪装的磁盘,而无需devio。

如果操作正确,则编辑MBR不会构成太大威胁。即使它被损坏了,它也不是主要的操作系统分区,那么谁在乎呢?您可以轻松修复它!
突破

@Breakthrough我想您会错过两个操作系统都在同一磁盘上的事实。
zneak 2011年

@zneak:我认为@Breakthrough是正确的-有几个程序可以保存并在紧急情况下还原MBR。
harrymc

此外,仅作记录,不幸的是,VMWare无法使用来自虚拟磁盘的虚拟驱动器。
zneak 2011年

没错,因为ImDisk无法使用IOCTL_MOUNTMGR_CREATE_POINT控制代码向NT挂载管理器正确注册。相反,它直接为驱动器号创建符号链接,当然,内核不认为该卷是合法的。我曾经尝试过使其工作,但并没有成功。(这就是为什么您不能使用ImDisk卷安装VHD的相同原因。)
user541686 2011年

2

这取决于您多么迫切地使此工作正常进行,但是我想说这是可能的,只需“简单”两个“简单”(阅读:残酷)步骤即可:

  1. 使用(semi-?)documentation标志编写驱动程序以绕过Windows设置的限制SL_FORCE_DIRECT_WRITE

  2. CreateFile和/或WriteFile使用像一个图书馆VMware的通话EasyHook(我告诉你,这是很容易!)与手动文件与驱动程序进行沟通,或许与司机使用通讯DeviceIoControl

如果您知道在哪里寻找绕过限制的信息,那听起来似乎并不坏...我已经钩住了Nero这样的应用程序,以便检查IOCTL_SCSI_PASS_THROUGH调用,因此我可以制作自己的CD刻录机库,不会太困难;编写驱动程序会比较困难,但是很容易管理。


编辑:

我猜您已经弄清楚了,但是您需要修改的结构称为FLT_IO_PARAMETER_BLOCK for IRP_MJ_READ。不知道它会多么容易,但是应该不会太难。


听起来很有趣。我明天再调查。
zneak 2011年

@zneak:如果您看一下我的回答,imdisk是可用的开源虚拟磁盘驱动程序,几乎已经可以完成您想要的操作。
harrymc

@Mehrdad我有一个非常相似的问题,您能帮我吗?CreateFile:即使具有管理员权限,“访问也被拒绝”-Win7
Ali
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.