After upgrading or installing VMware Tools version 12.5.0, duplicate entries for the VMware VMCI Host Device appear within the Guest OS Device Manager.
The entries typically present the following characteristics:
"This device is not working properly because Windows cannot load the drivers required for this device. (Code 31 Object name already exists)."The appearance of duplicate VMware VMCI Host Device entries is attributed to a limitation in the VMware Tools 12.5.0 installation logic during the upgrade process.
Instance Conflict: The current installer code does not verify whether a VMCI device instance already exists. Instead of updating the existing driver registration, it attempts to create a new instance. While this behavior is functional for "clean" installations, it results in a naming collision on systems where a previous version is already present.
Persistent Driver Registration: Under standard conditions, a VMware Tools uninstallation removes the VMCI driver and its associated device instances. However, if the VMCI driver was originally delivered and installed via Windows Update rather than a previous VMware Tools package, the uninstaller is designed to leave the driver intact to maintain system stability.
Resulting Error: Because the uninstaller preserves the original driver instance (if sourced from Windows Update), and the 12.5.0 installer forces the creation of a new one, Windows reports Code 31 (Object Name Already Exists) for the redundant entry.
VMware Engineering is aware of this issue and is currently developing a fix for the VMware Tools installer. This update will include logic to automatically detect and clean up redundant device entries during the installation process.
There are 2 available workarounds in the form of a manual or scripted approach.
Option 1: Manual
Option 2: Scripted
For scripting a clean up, the following 2 steps will be needed:
for /F "tokens=2 delims=:" %L in ('pnputil /enum-devices /Problem 31 ^|findstr /I "VMWVMCIHOSTDEV"') do pnputil/remove-device %L
$VMDriverskey = 'HKLM:\SOFTWARE\VMware, Inc.\VMware Drivers'$VMVmciValue = 'VmciHostDevInst'$VMVmciInstance = 'ROOT\VMWVMCIHOSTDEV\00000'Set-ItemProperty -Path $VMDriverskey -Name $VMVmciValue $VMVmciInstance(Get-ItemProperty -Path $VMDriverskey -Name $VMVmciValue).$VMVmciValue