Windowsで物理パーティションへの排他的アクセスを取得するクリーンな方法はありますか?


11

Windows 7では、物理パーティションにインストールされたOSからVMWare Playerを使用して仮想マシンを実行しようとしています。ただし、仮想マシンを起動すると、VMWare Playerは書き込みのために物理ドライブにアクセスできなかったと言います。

これは、VMWareコミュニティで一般に認められている問題のようです。WindowsVista には、最初に排他的アクセスを取得せずにrawドライブに書き込むことができない魅力的な新しいセキュリティ機能導入されたためです。

私はこの問題をグーグルで調べて、いくつかの回避策を見つけました。ただし、クリーンな ものは物理ディスク全体でのみ機能し、パーティションでは機能しないようです。

だから私は汚い解決策を残されるだろう。要するに、使用するパーティションの痕跡を消去するためにMBRと干渉し、Windowsにそれらを忘れさせてから、VMを起動できるようにMBRを復元します。

私はそれをやりたいかどうかわかりません。VMWareに、パーティションを破棄することなく、パーティションへの排他的アクセスを取得させる方法はありますか?私が探しているのは、物理ドライブ全体ではなくパーティションだけをオフラインにする方法だと思います。


報奨金に関する詳細情報

デュアルブートセットアップがあります。MacOSがプライマリオペレーティングシステムであり、Windowsもインストールされています。再起動したくない場合は、仮想マシンでWindowsを実行できますが、Windowsを使用している場合は、仮想マシンでMac OSを実行できます。

私の目標は、VMWare FusionからWindowsを実行するのと同じように、WindowsでVMWareからメインのMac OSパーティションを実行することです。(これが私のメインOSであるため、カーネルまたは仮想マシンで動作するようにパッチを適用する予定はありません。)VMWare Fusionから仮想マシンを作成しました(「Mac OS X Server」VMタイプがあるため) )その後、Windowsに移動し、VMWare Playerから変更しました。OSが読み込み画面に到達し、VMがにアクセスできないために死んでしまうため、ほとんど動作しているよう\\.\PhysicalDrive0です。

Virtual Boxは冗長モードでMac OSを起動し、非常に高速にクラッシュするため(パーティションにアクセスできるように見えます)、Virtual Boxを実行するよりもVMWareをパーティションにアクセスする方が簡単だと思いますそれ。

法律面では、Appleラベルの付いた1台のマシンでMac OS Xのコピーを1つ実行するので、大丈夫です。


興味深い問題。空白の未フォーマットのパーティションを作成すると機能しますか?
nhinkle

@nhinkle内蔵ドライブでテストできる予備のパーティションルームがありません。しかし、私が読んだことから、Windowsは認識できるパーティションをロックするようです。マウントポイントがないものもロックすることを確認できます。
zneak

@zneak:過去のTrueCryptでWindowsの制限を回避するために使用しました。独自のディスクドライバーがあるため、ディスクに書き込むことができる場合があります。パーティションをTrueCrypt仮想ディスクにしてみませんか?
ハリーマック

@harrymc試したことがありません。Mac OSパーティションを暗号化する必要がありますか?
-zneak

パーティションにTrueCryptボリュームを作成する必要があります(すべてのコンテンツが失われます)。これは方法を示すのに役立つかもしれませんが、TrueCryptのヘルプも参照してください。
ハリーマク

回答:


5

無料の仮想ディスクドライバーimdiskとdevio(リモートドライブアクセスおよび取得)を使用して、可能なソリューションを1つだけ見つけました。imdiskはカーネルドライバーであるため、パーティションに書き込むことができる場合があります。残念ながら、devioはユーザーモードで動作するため、このアプローチがあなたに適しているかどうかはわかりません。

devioは、物理パーティションを取得してネットワーク上に公開できます。例えば:

devio -r 9000 \\.\PhysicalDrive0 2

TCPポート9000で最初のディスクから2番目のパーティションを公開し、このポートでの接続を待機します。これをテストするときはファイアウォールを無効にし、devioを管理者として実行してください。

この公開されたパーティションを新しいスタンドアロンのハードディスクとして定義するには、次を使用します。

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

localhostを使用すると、Rという新しいハードディスクが作成されますが、これは何のパーティションでもありません。VMware仮想マシンで本物のハードディスクRを使用できるかどうかを試すことができます。

このアプローチの詳細については、「Devio:リモートドライブアクセスと取得」で説明しています

これが機能しない場合、次のいずれかを行う必要があります。

  1. MBRを変更する危険なソリューションを受け入れます。
  2. Win7内のMacOSをVMとして使用し、Windowsアプリケーションを介してMacパーティション内のファイルを使用することを放棄します(行末文字の問題)。
  3. ELDOS Callback File Systemなどの仮想ファイルシステム製品を使用してください。ただし、この問題は数千ドルの価値があるとは思いません。
  4. Windows 7を放棄し、XPにダウングレードします。
  5. imdiskソースを変更して、カーネルドライバーとして、devioを必要とせずに物理パーティションにふりをするディスクを直接作成します。

適切に行われれば、MBRの編集はあまり大きな脅威にはなりません。たとえ破損したとしても、プライマリOSパーティションではありません。簡単に修正できます!
ブレークスルー

@Breakthrough両方のOSが同じディスク上にあるという事実を見逃すと思います。
-zneak

@zneak:@Breakthroughは正しいと思います-緊急時にMBRを保存して復元できるプログラムがいくつかあります。
ハリーマック

また、記録のためだけに、VMWareは残念ながらimdiskの仮想ドライブを使用できません。
-zneak

IOCTL_MOUNTMGR_CREATE_POINT制御コードを使用してImDiskがNTマウントマネージャーに正しく登録されないため、これは正しいです。代わりに、ドライブ文字のシンボリックリンクを直接作成します。もちろん、カーネルはその正当なボリュームを考慮しません。以前に動作させようとしましたが、あまり成功していません。(たとえば、VHDのマウントにImDiskボリュームを使用できないのと同じ理由です。)
user541686

2

これを機能させるためにあなたがどれほど必死かによって異なりますが、「ちょうど」2つの「簡単な」(読み方:残忍な)ステップで可能だと言えます。

  1. (semi-?)documentedフラグを使用して、Windowsによって設定された制限をバイパスするドライバーを作成しますSL_FORCE_DIRECT_WRITE

  2. EasyHookなどのライブラリを使用してVMWareからフックCreateFileおよび/またはWriteFile呼び出し(簡単だと言いました)を使用してドライバーとファイルを手動で通信し、おそらくを使用してドライバーと通信します。DeviceIoControl

制限を回避するための情報を探す場所を知っていれば、実際にはそれほど悪くはありません... IOCTL_SCSI_PASS_THROUGH呼び出しを調べるためにNeroのようなアプリケーションをフックして、独自のCDバーナーライブラリを作成できるようにしました。難しくありません。ドライバーの作成は難しい部分ですが、管理しやすいでしょう。


編集:

あなたはすでにこれを理解していると思いますが、変更する必要がある構造はFLT_IO_PARAMETER_BLOCKと呼ばれIRP_MJ_READます。どれほど簡単かはわかりませんが、それほど難しくないはずです。


楽しそう。明日も調べます。
zneak

@zneak:あなたが私の答えを見ると、imdiskは利用可能なオープンソースの仮想ディスクドライバーであり、既に望んでいることをほとんど行っています。
ハリーマク

@Mehrdad私は非常によく似た問題を抱えています。手伝ってくれませんか?CreateFile:管理者権限でも「アクセスが拒否されました」-Win7-
アリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.