VMware Workstation和Device / Credential Guard不兼容

时间:2016-10-04 17:18:08

标签: cmd windows-10 vmware mount vmware-workstation

我去年一直在运行VMware没有问题,今天我打开它来启动我的一个虚拟机并收到错误消息,请看屏幕截图。

enter image description here

我确实按照链接完成了步骤,在步骤4中我需要使用" mountvol"来安装卷。 当我尝试使用mountvol X: \\?\Volume{5593b5bd-0000-0000-0000-c0f373000000}\挂载卷时,它会一直说The directory is not empty.我甚至创建了一个2GB的分区,但仍然是相同的消息。

我的问题:

如何安装非空的卷,即使它是?

为什么这个Device / Credential Guard会自动启用,如何摆脱它或禁用它。

CMD: enter image description here

15 个答案:

答案 0 :(得分:59)

承载安全内核的

Device/Credential Guard is a Hyper-V based Virtual Machine/Virtual Secure Mode使Windows 10更加安全。

enter image description here

  

...... VSM实例与正常操作隔离   系统功能并受到尝试读取信息的保护   那个模式。自管理程序以来,保护是硬件辅助的   请求硬件以不同方式处理这些内存页面。这个   是同一种方式,同一主机上的两个虚拟机不能   彼此互动;他们的记忆是独立的和硬件   规范以确保每个VM只能访问自己的数据。

     

从这里开始,我们现在有一个保护模式,我们可以运行安全性   敏感行动。在撰写本文时,我们支持三个   可以驻留在这里的功能:本地安全机构(LSA),   和代码完整性控制功能以内核模式代码的形式   完整性(KMCI)和管理程序代码完整性控制本身,   这称为管理程序代码完整性(HVCI)。

enter image description here

  

当VSM中的Trustlet处理这些功能时,主机操作系统   只需通过标准渠道与他们沟通即可   操作系统内部的功能。虽然这个特定于Trustlet   允许通信,在主机中有恶意代码或用户   操作系统尝试在VSM中读取或操作数据将是显着的   比没有配置的系统更难,提供   安全利益。

     

在VSM中运行LSA会导致LSA进程本身(LSASS)保持不变   主机操作系统,以及LSA的一个特殊的附加实例(称为LSAIso    - 创建 - 代表LSA Isolated)。这是为了允许所有   标准要求LSA仍然成功,提供出色的遗产   和向后兼容性,即使对于服务或功能   需要与LSA直接沟通。在这方面,你可以思考   主机操作系统中剩余的LSA实例作为“代理”或“存根”   简单地与隔离版本进行通信的实例   规定的方式。





Hyper-V和VMware 无法同时工作。您必须将VM迁移到Hyper-V或禁用该功能。应该足以在控制面板中选择Hyper-V和隔离用户模式功能 - > Program&功能 - >打开或关闭功能:

enter image description here

别忘了重启!

答案 1 :(得分:53)

有一种更好的方法来处理这个问题。您只需进行备用启动即可在需要使用VMWare时暂时禁用Hyper-V,而不是完全删除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是您在第二个命令中使用的ID。不要只是逐字地运行。

重新启动后,您将看到一个包含两个选项的菜单...

  • Windows 10
  • 没有Hyper-V

因此,使用VMWare只需重新启动并选择No Hyper-V选项即可。

如果要再次删除引导条目。您可以使用bcdedit的/ delete选项。

首先,获取当前引导条目的列表......

C:\>bcdedit /v

这会列出所有带有ID的条目。复制相关ID,然后将其删除......

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

如评论中所述,您需要从提升的命令提示符执行此操作,而不是PowerShell。在powershell中,命令会出错。

答案 2 :(得分:18)

我仍然不相信Hyper-V对我来说是件事,即使是去年的Docker试验和磨难,我想你不会想要频繁切换,所以不要创建一个新的启动并确认启动默认或等待每次启动的超时我在管理员模式下按控制台按需切换

bcdedit /set hypervisorlaunchtype off

这篇文章的另一个原因 - 为您节省一些麻烦:您认为再次使用“on”参数切换Hyper-V?不。 MiRKoS..t太简单了。这是自动

玩得开心!
-G。

答案 3 :(得分:9)

对于那些最近对涉及Hyper-V的计算机进行更改的用户可能会遇到此问题,您需要在使用VMWare或VirtualBox时将其禁用。他们不一起工作。 Windows Sandbox和WSL 2需要打开Hyper-V虚拟机监控程序,该虚拟机当前会破坏VMWare。基本上,您将需要运行以下命令来在下次重新启动时启用/禁用Hyper-V服务。

要在Windows PowerShell中以管理员身份禁用Hyper-V并使VMWare工作:

bcdedit /set hypervisorlaunchtype off

要立即重新启用Hyper-V并中断VMWare,请在PowerShell中以Admin身份进行操作:

bcdedit /set hypervisorlaunchtype auto

此后,您需要重新启动。我已经编写了一个PowerShell脚本,它将为您切换该脚本并使用对话框进行确认。它甚至可以使用this technique自动提升为管理员,以便您可以右键单击并运行脚本以快速更改Hyper-V模式。也可以轻松地对其进行修改以重新启动,但是我个人不希望这种情况发生。将其另存为hypervisor.ps1,并确保您已运行Set-ExecutionPolicy RemoteSigned,以便可以运行PowerShell脚本。

# 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

    }

}

答案 4 :(得分:4)

要使其变得超级简单:

  1. 直接从Microsoft获得download this script

  2. 以管理员身份运行Powershell,然后执行以下命令:

    • 验证是否已启用DG / CG DG_Readiness.ps1 -Ready
    • 禁用DG / CG。 DG_Readiness.ps1 -Disable

答案 5 :(得分:2)

我不知道为什么,但是DG_Readiness_Tool的3.6版对我不起作用。 重新启动后,笔记本电脑问题仍然存在。 我一直在寻找解决方案,最后遇到了3.7版 工具,这次问题就消失了。 在这里您可以找到最新的Powershell脚本:

DG_Readiness_Tool_v3.7

答案 6 :(得分:1)

我在这个问题上也很努力。该线程中的答案很有帮助,但不足以解决我的错误。就像其他答案一样,您需要禁用Hyper-V和Device Guard。有关更多信息,请参见here

除了上面提供的答案之外,我还包括需要进行的更改。最终对我有帮助的链接是this

我的答案将仅总结其余答案(即禁用Hyper-V和Device Guard)与以下步骤之间的区别:

  1. 如果您使用组策略,请禁用您设置的组策略设置 用于启用Windows Defender Credential Guard(计算机 配置->管理模板->系统-> Device 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. 使用以下命令删除Windows Defender Credential Guard EFI变量 bcdedit。在提升的命令提示符下(以管理员模式启动),键入 以下命令:

     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的功能。

答案 7 :(得分:1)

此问题的最简单解决方案是下载“ Device Guard和Credential Guard硬件就绪工具”以更正不兼容问题:

答案 8 :(得分:1)

Windows 1909 (18363.1377)

就我而言我使用的是 Windows 1909,Device Guard 被禁用,Hyper V 也是如此。在尝试 docker 时,我安装并启用了 wsl2。从控制面板卸载 wsl 并从 powershell 禁用它后,我的 vmware 再次开始工作。

以下是禁用wsl的命令

以管理员身份在 powershell 中运行

dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux


卸载屏幕截图中显示的 WSL

enter image description here

重启系统

答案 9 :(得分:0)

如果您始终保持打开的自定义“以管理员身份运行”命令提示符或Powershell命令行窗口,则可以选择设置以下别名/宏来简化执行@ gue22提及的命令,从而仅禁用超级用户-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” [启动配置设备列表]命令来执行打开,关闭,列出命令

答案 10 :(得分:0)

男孩和女孩在晚上凌晨阅读了17093版本的发行说明后,发现更改点影响了我的VMware Workstation VM,导致它们无法工作,这是核心设置中Windows安全性(Windows Defender页面的新名称)下“设备安全性”下的隔离设置

默认情况下它是打开的,但是当我关闭它并重新启动PC时,我所有的VMware VM恢复正常工作。也许可以在下一个版本中加入“按设备”选项,以使我们能够测试单个设备/ App的响应,从而根据需要对每个设备或App进行核心隔离。

答案 11 :(得分:0)

安装最新的vmware工作站> 15.5.5版本

具有Hyper-V主机支持

随着VMware Workstation / Player 15.5的发行。 5或>,我们是 非常高兴并自豪地宣布支持Windows主机 Hyper-V模式已启用!您可能知道,这是来自 Microsoft和VMware

https://blogs.vmware.com/workstation/2020/05/vmware-workstation-now-supports-hyper-v-mode.html

我安装了VMware.Workstation.Pro.16.1.0

现在它解决了我的问题,即使我启用了窗口Hyper-V模式,我同时也在使用docker和vmware

答案 12 :(得分:-1)

以下是正确的说明,以便每个人都可以遵循。

  • 首先通过以下链接下载Device Guard和Credential Guard硬件准备工具:https://www.microsoft.com/en-us/download/details.aspx?id=53337
  • 将zip文件夹内容提取到某个位置,例如: C:\ guard_tool
  • 在我的情况下,您将拥有类似ps1扩展文件的副本文件名的文件,即v3.6,因此它将为:DG_Readiness_Tool_v3.6.ps1

enter image description here

  • 接下来单击开始菜单并搜索powershell,然后右键单击它并以管理员身份运行。

enter image description here

  • 之后,您将看到蓝色的终端,输入命令 cd C:\ guard_tool ,用提取的工具位置替换 cd 之后的路径
  • 现在输入命令:。\ DG_Readiness_Tool_v3.6.ps1 -Disable
  • 重新启动系统后
  • 系统重新启动时,引导时间系统将以黑色背景显示通知,以确认您要禁用这些功能,因此请按F3确认。
  • 如果有帮助,请+1 :)

答案 13 :(得分:-1)

每步快速解决方案:

修复了Windows 10主机上VMware Workstation中的错误 传输(VMDB)错误-14:管道连接已断开。

今天我们将在Windows 10计算机上修复VMWare错误。

  1. 在“运行”框中,键入“ gpedit”,然后转到[错误查看点3]

1-计算机配置

2-管理模板

3-系统-Device Guard:如果没有设备保护:(下载 https://www.microsoft.com/en-us/download/100591 ,请安装此"c:\Program Files (x86)\Microsoft Group Policy\Windows 10 November 2019 Update (1909)\PolicyDefinitions" COPY c:\windows\PolicyDefinitions

4-启用基于虚拟化的安全性。 现在,双击并“禁用”

  1. 以管理员身份打开命令提示符,然后键入以下内容 gpupdate / force [如果您再没有设备保护措施,也不要这样做]

  2. 打开注册表编辑器,现在转到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceGuard。添加一个名为EnableVirtualizationBasedSecurity的新DWORD值并将其设置为0以禁用它。 下一步转到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA。添加一个名为LsaCfgFlags的新DWORD值并将其设置为0以禁用它。

  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

现在,重新启动系统

答案 14 :(得分:-1)

我遇到了同样的问题。我有 VMware Workstation 15.5.4 和 Windows 10 版本 1909 并安装了 Docker Desktop。

这是我如何解决的:

  1. 安装新的 VMware Workstation 16.1.0
  2. 将我的 Windows 10 从 1909 年更新到 20H2

正如 VMware 指南在此 link

中所说 <块引用>

如果您的主机装有 Windows 10 20H1 build 19041.264 或更新版本, 升级/更新到 Workstation 15.5.6 或更高版本。 如果您的主机装有 Windows 10 1909 或更早版本,请在主机上禁用 Hyper-V 以解决此问题。

现在 VMware 和 Hyper-V 可以同时存在,并且在我的 Windows 上同时拥有 Docker 和 VMware。