VMware WorkstationとDevice / Credential Guardには互換性がありません


120

私は昨年、問題なくVMwareを実行してきましたが、今日それを開いて、VMの1つを起動するとエラーメッセージが表示されました。スクリーンショットを参照してください。

ここに画像の説明を入力してください

リンクをたどって手順を実行しました。手順4では、「mountvol」を使用してボリュームをマウントする必要があります。mountvol X: \\?\Volume{5593b5bd-0000-0000-0000-c0f373000000}\それを使用してボリュームをマウントしようとするThe directory is not empty.と、2GBのパーティションを作成したとさえ言い続けますが、それでも同じメッセージが表示されます。

私の質問:

空でないボリュームをマウントするにはどうすればよいですか?

このDevice / Credential Guardが自動的に有効化された理由と、それを削除または無効化する方法を教えてください。

CMD: ここに画像の説明を入力してください

回答:


81

Device / Credential Guardは、Hyper-Vベースの仮想マシン/仮想セキュアモードであり、安全なカーネルをホストしてWindows 10をはるかに安全にします。

ここに画像の説明を入力してください

... VSMインスタンスは通常のオペレーティングシステム機能から分離され、そのモードで情報を読み取ろうとする試みによって保護されます。ハイパーバイザーがハードウェアにこれらのメモリページの扱いを異なるように要求しているため、保護はハードウェアによって支援されます。これは、同じホスト上の2つの仮想マシンが相互に対話できないのと同じ方法です。それらのメモリは独立しており、各VMが自身のデータにのみアクセスできるようにハードウェアが調整されています。

ここからは、セキュリティに配慮した操作を実行できる保護モードになりました。執筆時点では、ここに常駐できる3つの機能、ローカルセキュリティ機関(LSA)、およびカーネルモードコード整合性(KMCI)の形式のコード整合性制御機能と呼ばれるハイパーバイザーコード整合性制御自体がサポートされています。ハイパーバイザーコード整合性(HVCI)。

ここに画像の説明を入力してください

これらの機能がVSMのトラストレットによって処理される場合、ホストOSは、OS内の標準チャネルおよび機能を介して単にそれらと通信します。このTrustlet固有の通信は許可されますが、ホストOSの悪意のあるコードまたはユーザーがVSMでデータを読み取ったり操作したりすることは、これが構成されていないシステムよりもはるかに困難であり、セキュリティ上の利点があります。

VSMでLSAを実行すると、LSAプロセス自体(LSASS)がホストOSに残り、LSAの特別な追加インスタンス(LSAIsoと呼ばれ、LSA分離の略)が作成されます。これにより、LSAへのすべての標準呼び出しが引き続き成功し、LSAとの直接通信を必要とするサービスまたは機能に対しても、優れたレガシーおよび下位互換性が提供されます。この点で、ホストOS内の残りのLSAインスタンスは、指定された方法で隔離されたバージョンと単に通信する「プロキシ」または「スタブ」インスタンスと考えることができます。


そして、Hyper-VとVMwareは、同じ時間に動作しませんでしたまで2020年VMwareはHyper-Vはとの共存へのHyper-Vプラットフォームを使用して起動するバージョン15.5.5

バージョン15.5.5より前のVMware Workstationはどのように機能しますか?

VMware Workstationは従来、特権モードで動作する仮想マシンモニター(VMM)を使用しており、CPUへの直接アクセスと、CPUの組み込み仮想化サポート(Intel VT-xおよびAMDのAMD-V)へのアクセスが必要です。Windowsホストが仮想化ベースのセキュリティ(「VBS」)機能を有効にすると、WindowsはハードウェアとWindowsの間にHyper-Vに基づくハイパーバイザーレイヤーを追加します。VMware-Mの従来のVMMを実行しようとすると、Hyper-V内にあるVMMはハードウェアの仮想化サポートにアクセスできなくなるため、失敗します。

ユーザーレベルモニターの紹介

このHyper-V /ホストVBS互換性の問題を修正するために、VMwareのプラットフォームチームは、MicrosoftのWHP APIを使用するようにVMwareのハイパーバイザーを再設計しました。これは、VMMを変更して特権モードではなくユーザーレベルで実行するように変更することと、基盤となるハードウェアを直接使用する代わりにWHP APIを使用してゲストの実行を管理するように変更することを意味します。

これはあなたにとって何を意味しますか?

Hyper-Vが有効な場合、VMware Workstation / Playerを実行できるようになりました。VMware Workstationを実行するか、WSL、Device Guard、Credential GuardなどのWindows機能を実行するかを選択する必要がなくなりますHyper-Vを有効にすると、ULMモードが自動的に使用されるため、VMware Workstationを通常どおり実行できます。Hyper-Vをまったく使用しない場合、VMware Workstationはこれを検出するのに十分スマートであり、VMMが使用されます。

システム要求

WindowsハイパーバイザーAPIを使用してWorkstation / Playerを実行するには、最低限必要なWindows 10バージョンはWindows 10 20H1ビルド19041.264です。VMware Workstation / Playerの最小バージョンは15.5.5です。

エラーを回避するには、Windows 10をバージョン2004 / Build 19041(Mai 2020 Update)にアップデートし、少なくともVMware 15.5.5を使用してください


11
私のWindows 10(Anniversary Update)のバージョンは14393.351で、強調表示された2つの機能のうち、「Hyper-Vハイパーバイザー」のみがあり、「分離ユーザーモード」はありませんでした。「Hyper-V Hypervisor」機能のみをアンインストールすることで、VMwareの問題を修正することができました。VMwareがKBで
Adam Elkurd

2
この方法でHyper-Vを無効にしたり、サードパーティのユーティリティをインストールしたりする必要はありません。Hyper-Vは、組み込みのbcdeditコマンドで代替のブートオプションを使用するだけで、必要に応じてオンとオフを切り替えることができます(私の回答を参照してください)。
user1751825 2017年

2
このソリューションは、Win10 Creators Updateでは機能しないようです。
asliwinski 2017

1
@AmatVictoriaCuramがサーバーマネージャーを使用してHyper-Vの役割を削除
magicandre1981

2
このエラーを解消するには、Windows機能の「Linuxサブシステム」をアンインストールして再起動する必要もありました。
Mtxz

83

この問題を処理するより良い方法があります。VMWareを使用する必要がある場合は、Hyper-Vを完全に削除するのではなく、代替ブートを実行して一時的に無効にします。ここに示すように...

http://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx

C:\>bcdedit /copy {current} /d "No Hyper-V" 
The entry was successfully copied to {ff-23-113-824e-5c5144ea}. 

C:\>bcdedit /set {ff-23-113-824e-5c5144ea} hypervisorlaunchtype off 
The operation completed successfully.

注:最初のコマンドから生成されたIDは、2番目のコマンドで使用するものです。そのまま実行しないでください。

再起動すると、2つのオプションのあるメニューが表示されます...

  • ウインドウズ10
  • Hyper-Vなし

そのため、VMWareを使用するには、リブートして、[Hyper-Vなし]オプションを選択するだけです。

ブートエントリを再度削除する場合。bcdeditには/ deleteオプションを使用できます。

まず、現在のブートエントリのリストを取得します...

C:\>bcdedit /v

これにより、すべてのエントリがIDとともに一覧表示されます。関連するIDをコピーして、次のように削除します...

C:\>bcdedit /delete {ff-23-113-824e-5c5144ea}

コメントで述べたように、これはpowershellではなく管理者特権のコマンドプロンプトから行う必要があります。PowerShellでは、コマンドはエラーになります。

更新:中括弧がバックティック( `)でエスケープされている場合、Powershellでこれらのコマンドを実行することが可能です。そのようです...

C:\WINDOWS\system32> bcdedit /copy `{current`} /d "No Hyper-V"

1
注:管理者コマンドラインでコマンドを実行するPowerShellと、機能しません。
MaciejLisCK 2017年

これは私にとってはうまくいきましたが、上記のアクションをどのようにロールバックできますか?
user3402754 2017年

bcdeditの/ deleteオプションを使用して、複製されたエントリを削除できます。上記の回答を更新しました。
user1751825 2017年

5
これが最良の答えです。私見
Dror 'Yitzhakov'

1
@SomethingSomething管理者特権のコマンドプロンプトからコマンドを実行する必要があります。右クリックして「管理者として実行」を選択します。
user1751825

43

昨年のDockerの試練や苦難があっても、Hyper-Vが私にとって重要であると私はまだ確信していません。頻繁に切り替えたくないので、新しいブートを作成してブートのデフォルトを確認するのではなく、起動ごとにタイムアウトを待機し、管理モードのコンソールでオンデマンドで切り替えます

bcdedit /set hypervisorlaunchtype off

この投稿のもう1つの理由-頭痛の種を省くために: "on"引数を使用してHyper-Vを再びオンにすると考えましたか?いいえ。MiRKoS..tには単純すぎる。それはだ、オート

楽しんで!
G.


特に、両方が必要な場合(Hyper-Vハイパーバイザー全体をアンインストールする代わりに)機能します。私は両方のテクノロジーをいじるために2つを切り替え続けます。そういうわけで私はこの方法を好む。
Mohamed El-Beltagy 2017年

7
そしてbcdedit /set hypervisorlaunchtype auto、あなたが戻ってそれをオンにする必要がある場合。
Ken

2
VMを実行するには、再起動する必要がありました。
チェタン

1
これは最もシンプルで甘い解決策です。ありがとうございます。
Hemanth Savasere、

20

とても簡単にするには:

  1. このスクリプトをMicrosoftから直接ダウンロードするだけです。

  2. Powershellを管理者として実行し、次のコマンドを実行します。

    • DG / CGが有効になっているかどうかを確認するには DG_Readiness.ps1 -Ready
    • DG / CGを無効にします。 DG_Readiness.ps1 -Disable

ダウンロードするスクリプトを適切に使用する方法についての情報を提供すると、さらに役立ちます。誰かがPowershellのスクリプトを投稿するたびに、その使用方法を適切に説明することはありません。
ペゲス

私の場合、スクリプトの実行が無効になっているため、スクリプトを実行できませんでした。最初に次のコマンドでスクリプトの実行を有効にする必要がありました。 Set-ExecutionPolicy unrestricted 再起動時に、Device Guardを無効にするように求めるプロンプトが表示されました。解決策をありがとう!
ラジフ

レジストリのすべてのボックスのチェックを外しましたが、それでもエラーが発生していました。このスクリプトは私にとってはうまくいきました。最後に、デバイスガードやその他の保護を無効にするための再起動時にプロンプ​​トが表示されました。
ダガード

9

Hyper-Vを使用するコンピューターへの最近の変更でこの問題が発生している可能性がある場合は、VMWareまたはVirtualBoxを使用しているときに無効にする必要があります。彼らは一緒に働きません。WindowsサンドボックスとWSL 2には、現在VMWareを壊すHyper-Vハイパーバイザーが必要です。基本的に、次の再起動時にHyper-Vサービスを有効または無効にするには、次のコマンドを実行する必要があります。

Hyper-Vを無効にしてVMWareを動作させるには、PowerShellで管理者として:

bcdedit /set hypervisorlaunchtype off

Hyper-Vを再度有効にしてVMWareを中断するには、管理者としてPowerShellを使用します。

bcdedit /set hypervisorlaunchtype auto

その後、再起動する必要があります。これを切り替えてダイアログボックスで確認するPowerShellスクリプトを作成しました。この手法を使用して、管理者に自己昇格することもできるため、スクリプトを右クリックして実行するだけで、Hyper-Vモードをすばやく変更できます。それはあなたのために再起動するように簡単に変更することもできますが、私は個人的にそれが起こることを望みませんでした。これをhypervisor.ps1として保存し、Set-ExecutionPolicy RemoteSignedPowerShellスクリプトを実行できるように実行していることを確認します。

# Get the ID and security principal of the current user account
$myWindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent();
$myWindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($myWindowsID);

# Get the security principal for the administrator role
$adminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator;

# Check to see if we are currently running as an administrator
if ($myWindowsPrincipal.IsInRole($adminRole))
{
    # We are running as an administrator, so change the title and background colour to indicate this
    $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)";
    $Host.UI.RawUI.BackgroundColor = "DarkBlue";
    Clear-Host;
}
else {
    # We are not running as an administrator, so relaunch as administrator

    # Create a new process object that starts PowerShell
    $newProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";

    # Specify the current script path and name as a parameter with added scope and support for scripts with spaces in it's path
    $newProcess.Arguments = "-windowstyle hidden & '" + $script:MyInvocation.MyCommand.Path + "'"

    # Indicate that the process should be elevated
    $newProcess.Verb = "runas";

    # Start the new process
    [System.Diagnostics.Process]::Start($newProcess);

    # Exit from the current, unelevated, process
    Exit;
}

Add-Type -AssemblyName System.Windows.Forms


$state = bcdedit /enum | Select-String -Pattern 'hypervisorlaunchtype\s*(\w+)\s*'


if ($state.matches.groups[1].ToString() -eq "Off"){

    $UserResponse= [System.Windows.Forms.MessageBox]::Show("Enable Hyper-V?" , "Hypervisor" , 4)

    if ($UserResponse -eq "YES" ) 
    {

        bcdedit /set hypervisorlaunchtype auto
        [System.Windows.Forms.MessageBox]::Show("Enabled Hyper-V. Reboot to apply." , "Hypervisor")

    } 

    else 

    { 

        [System.Windows.Forms.MessageBox]::Show("No change was made." , "Hypervisor")
        exit

    }

} else {

    $UserResponse= [System.Windows.Forms.MessageBox]::Show("Disable Hyper-V?" , "Hypervisor" , 4)

    if ($UserResponse -eq "YES" ) 
    {

        bcdedit /set hypervisorlaunchtype off
        [System.Windows.Forms.MessageBox]::Show("Disabled Hyper-V. Reboot to apply." , "Hypervisor")

    } 

    else 

    { 

        [System.Windows.Forms.MessageBox]::Show("No change was made." , "Hypervisor")
        exit

    }

}

1
Windowsレジストリの内容を変更したり、Windowsの機能を無効にしたりせずに、トリックを実行します。ありがとうございました。
Alexandru Dicu

1
このソリューションを共有していただきありがとうございます。少し無関係ですが、これにより、Virtualboxのパフォーマンスが非常に遅くなる問題も修正されました。このソリューション以前は、VirtualboxにWin10ゲストOSをインストールしようとすると、非常に時間がかかりました。Virtualboxがハイパーバイザーをオフにする警告を出さなかったため、VMWareを調査しました。私はあなたの解決策を見つけました、そしてそれはVMWareとVirtualboxの両方で私の問題を解決しました。
Zythyr

悲しいことに、Windows 10でv2004を更新しても、VMware Workstationは再び機能しますが、Docker for Windowsの実行が妨げられた場合は、Dockerがこの設定を有効にしているようです。
Shawn Melton

それは素晴らしいことであり、完璧に機能しました!Hyper-Vを無効にすることの影響についての考えを共有できますか?これはWin10のセキュリティ問題ですか?ありがとう!
ストライプ

1
@atripes問題ありません!Hyper-Vを無効にすると、他のプログラムがハードウェアを仮想化するためのインターフェイスを提供するWindowsシステムサービスが無効になります。したがって、サービスの開始を停止するだけなので、このサービスを無効にしてもセキュリティ上の問題はありません。この特定のケースでは、サービスが実際に仮想化が他の場所で行われるのを妨げているため、まさにそれが私たちの望みです!
J. Blackadar

4

この問題の最も簡単な解決策は、「Device GuardおよびCredential Guardハードウェア準備ツール」をダウンロードして非互換性を修正することです。


それが動作しない場合は、次の手順を実行します。 computerz.solutions/...
AJcleverprogrammer

3

理由はわかりませんが、DG_Readiness_Toolのバージョン3.6が機能しませんでした。再起動後、ラップトップの問題はまだ解決しません。解決策を探していて、ついにバージョン3.7のツールに出会い、今回は問題がなくなりました。ここで最新のPowerShellスクリプトを見つけることができます。

DG_Readiness_Tool_v3.7


1

私もこの問題で多くの苦労しました。このスレッドの回答は役に立ちましたが、私のエラーを解決するには不十分でした。他の回答が示唆しているように、Hyper-Vとデバイスガードを無効にする必要があります。それについての詳細はここにあります

上記の回答に加えて、必要な変更を含めています。最終的に私を助けたリンクはこれでしでした。

私の答えは、残りの答え(つまり、Hyper-Vとデバイスガードの無効化)と次の手順の違いだけを要約するつもりです。

  1. グループポリシーを使用した場合は、Windows Defender Credential Guardを有効にするために使用したグループポリシー設定を無効にします(コンピューターの構成->管理用テンプレート->システム->デバイスガード->仮想化ベースのセキュリティをオンにします)。
  2. 次のレジストリ設定を削除します。

    HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ LSA \ LsaCfgFlags HKEY_LOCAL_MACHINE \ Software \ Policies \ Microsoft \ Windows \ DeviceGuard \ EnableVirtualizationBasedSecurity HKEY_LOCAL_MACHINE \ Software \ Policies \ Microsoft \ Windows \ DeviceGuard \ RequirePlatformSecurityFeatures

    重要: これらのレジストリ設定を手動で削除する場合は、必ずすべて削除してください。それらをすべて削除しないと、デバイスがBitLocker回復に入る可能性があります。

  3. bcdeditを使用して、Windows Defender Credential Guard EFI変数を削除します。管理者特権のコマンドプロンプトから(管理者モードで開始)、次のコマンドを入力します。

     mountvol X: /s
    
     copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
    
     bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
    
     bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
    
     bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
    
     bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO
    
     bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
    
     mountvol X: /d
    
  4. PCを再起動します。

  5. プロンプトを受け入れて、Windows Defender Credential Guardを無効にします。

  6. または、仮想化ベースのセキュリティ機能を無効にして、Windows Defender Credential Guardをオフにすることもできます。


上記の答えがうまくいかない場合は、1を試してくださいbcdedit /set hypervisorlaunchtype off
Nicholas K

1

すべてのステップでの迅速なソリューション:

Windows 10ホストトランスポート(VMDB)エラー-14上のVMware Workstationのエラーを修正:パイプ接続が切断されました。

今日は、Windows 10コンピューターのVMWareエラーを修正します。

  1. [実行]ボックスに「gpedit」と入力してから、[エラーを参照]に移動します[3]

1-コンピュータの構成2-管理用テンプレート3-システム-デバイスガード:デバイスガードがない場合:(https://www.microsoft.com/en-us/download/100591 この"c:\Program Files (x86)\Microsoft Group Policy\Windows 10 November 2019 Update (1909)\PolicyDefinitions" コピーをダウンロードしてダウンロードしてくださいc:\windows\PolicyDefinitions)4-仮想化に基づくセキュリティ。それをダブルクリックして「無効にする」

  1. 管理者としてコマンドプロンプトを開き、次のgpupdate / forceを入力します[デバイスに保護がなければ、再度実行しないでください]

  2. レジストリエディターを開きHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceGuardます。という名前の新しいDWORD値を追加し、EnableVirtualizationBasedSecurity0に設定して無効にします。次に進みHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSAます。という名前の新しいDWORD値を追加し、LsaCfgFlags0に設定して無効にします。

  3. [実行]ボックスに「Windowsの機能の有効化または無効化」と入力し、Hyper-Vのチェックを外してシステムを再起動します。

  4. 管理者としてコマンドプロンプトを開き、次のコマンドを入力します

    bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader

    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"

    bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
    
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS

    bcdedit /set hypervisorlaunchtype off

次に、システムを再起動します


ありがとう、助けになりました
Rohit gupta

0

カスタマイズされた「管理者として実行」コマンドプロンプトまたはpowershellコマンドラインウィンドウを常に開いている場合は、オプションで次のエイリアス/マクロを設定して、@ gue22で言及されているコマンドを簡単に実行して、hyper-vハイパーバイザーを無効にすることができます。 VMwareプレーヤーまたはワークステーションを使用する必要があり、完了時に再度有効にする必要がある場合。

doskey hpvEnb = choice /c:yn /cs /d n /t 30 /m "Are you running from elevated command prompt" ^& if not errorlevel 2 ( bcdedit /set hypervisorlaunchtype auto ^& echo.^&echo now reboot to enable hyper-v hypervisor )
doskey hpvDis = choice /c:yn /cs /d n /t 30 /m "Are you running from elevated command prompt" ^& if not errorlevel 2 ( bcdedit /set hypervisorlaunchtype off ^& echo.^&echo now reboot to disable hyper-v hypervisor )
doskey bcdL = bcdedit /enum ^& echo.^&echo now see boot configuration data store {current} boot loader settings

上記のように配置すると、 "hpvenb" [ハイパーバイザーはブート時に有効]、 "hpvdis" [ハイパーバイザーはブート時に無効]、および "bcdl" [ブート構成デバイスリスト]コマンドを入力して、on、off、listコマンドを実行できます。


0

Boys and Girlsは、ビルド17093のリリースノートを夜のほんの少しの時間で読んだ後、VMware Workstation VMが動作しなくなる原因となる変更点を見つけました。 これは、デバイスセキュリティの下のコア分離設定です。設定でのWindowsセキュリティ(Windows Defenderページの新しい名前)

デフォルトではオンになっていますが、オフにしてPCを再起動すると、すべてのVMware VMが正常に動作を再開しました。おそらく、次のビルドにデバイス別オプションを組み込んで、個々のデバイス/アプリの応答をテストし、必要に応じてデバイスまたはアプリごとにコア分離をオンまたはオフにできるようにすることができます。


2
community.vmware.com/message/2753727#2753727から回答全体をコピーしましたか?少なくともクレジットを与えます。
Vishnudev K

-2

ここでは、誰もがフォローできるように適切な指示があります。

  • まず、このリンクからDevice GuardおよびCredential Guardハードウェア準備ツールをダウンロードします。 ます。https //www.microsoft.com/en-us/download/details.aspx?id = 53337
  • zipフォルダーのコンテンツを次のような場所に抽出します:C:\ guard_tool
  • あなたは私の場合そのv3.6のps1拡張ファイルのこのコピーファイル名のようなファイルを持っているので、それは次のようになります:DG_Readiness_Tool_v3.6.ps1

ここに画像の説明を入力してください

  • 次に、スタートメニューをクリックしてpowershellを検索し、右クリックして管理者として実行します。

ここに画像の説明を入力してください

  • その後、青色の端末が表示されますコマンド cd C:\ guard_toolを入力しcdの後にパスを置き換えますを、抽出したツールの場所にます。
  • 次にコマンドを入力します: 。\ DG_Readiness_Tool_v3.6.ps1 -Disable
  • その後、システムを再起動します
  • システムが再起動すると、起動時にシステムはこれらの機能を無効にすることを確認するために黒い背景で通知を表示するので、F3を押して確認します。
  • それが役に立ったなら+1をする:)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.