vSphere Client Installation fails with “Failed to install hcmon”

This was a rather annoying error. It seems to stem from having to support multiple different versions of vSphere and thus having many versions of the client installed along with VMware Remote Console (VMRC).

There are a couple of articles from VMware on how to try and resolve this:

  • kb2130850 – Uninstall all vSphere clients and start over
  • kb2006486 – Uninstall hcmon and rename hcmon.sys
  • kb2053281 – Install .NET 3.5.1

None of these however helped me. It was worth digging around in vminst.log which you can find in: C:\Users\ACCOUNTNAME\AppData\Local\Temp

What was interesting in the log was the following snippet:

2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| Begin Logging
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| — VMUninstallHcmon(): Uninstalling hcmon service
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| Util_GetKeyValueString(HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware USB\InstallPath) = “C:\Program Files (x86)\Common Files\VMware\USB\”
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| Uninstalling HCMON in “C:\Program Files (x86)\Common Files\VMware\USB\”
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| — CallVNLUninstallDriver()
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| Attempting to call function VNL_UninstallHcmon in C:\Program Files (x86)\Common Files\VMware\USB\vnetlib.dll
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| Loading vnetlib from “C:\Program Files (x86)\Common Files\VMware\USB\vnetlib.dll” [508a0000]
2018-01-17T07:14:33.342+02:00| inst-build-6966790| I1: VNLUninstallLegacyInf: driverId:hcmon cmd:uninstall hcmoninf args:5;Win7
2018-01-17T07:14:33.342+02:00| inst-build-6966790| I2: GetVnetParameter: vmnet: ” ” ‘InstallPath’
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E2: GetVnetParameter: vnetlib path doesn’t exist so can’t open
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E2: GetSpecificProductInstallPath: could not find an InstallPath key for product
2018-01-17T07:14:33.342+02:00| inst-build-6966790| I2: VNLWorkstationInstalled: didn’t find install path for VMware Workstation
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E2: GetSpecificProductInstallPath: could not find product registry key
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E2: GetSpecificProductInstallPath: could not find an InstallPath key for product
2018-01-17T07:14:33.342+02:00| inst-build-6966790| I2: VNLPlayerInstalled: didn’t find install path for player
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E1: VNL_GetProductInstallPath: could not find a InstallPath key anywhere
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E1: VNLSpawn64BitVnetlibTask: failed to get generic product install path
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E1: VNLUninstallLegacyInf: Failed to handle 64-bit properly
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E2: VNLDeleteSystemFile: failed to delete 0x00000002 ‘C:\WINDOWS\system32\drivers\hcmon.sys’
2018-01-17T07:14:33.342+02:00| inst-build-6966790| E2: VNLDeleteSystemFile: failed #2 to delete 0x00000002 ‘C:\WINDOWS\system32\drivers\hcmon.sys’
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| ERROR: Failed calling VNL_UninstallHcmon
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| Freeing library: 1351221248
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| ERROR: Failed to uninstall hcmon
2018-01-17 07:14:33| USBDeviceInstUtil-build-5395284| End Logging

and

2018-01-17 07:14:56| USBDeviceInstUtil-build-5395284| Begin Logging
2018-01-17 07:14:56| USBDeviceInstUtil-build-5395284| — VMInstallHcmon(): Installing hcmon service
2018-01-17 07:14:56| USBDeviceInstUtil-build-5395284| Getting Property CustomActionData = C:\Program Files (x86)\Common Files\VMware\USB\;5
2018-01-17 07:14:56| USBDeviceInstUtil-build-5395284| Installing HCMON in “C:\Program Files (x86)\Common Files\VMware\USB\”
2018-01-17 07:14:56| USBDeviceInstUtil-build-5395284| Attempting to call function VNL_InstallHcmon in “C:\Program Files (x86)\Common Files\VMware\USB\”
2018-01-17 07:14:57| USBDeviceInstUtil-build-5395284| Loading vnetlib from “C:\Program Files (x86)\Common Files\VMware\USB\vnetlib.dll” [508a0000]
2018-01-17T07:14:57.010+02:00| inst-build-6966790| I1: VNLInstallLegacyInf: driverId:hcmon cmd:install hcmoninf args:5;Win7
2018-01-17T07:14:57.010+02:00| inst-build-6966790| I2: GetVnetParameter: vmnet: ” ” ‘InstallPath’
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E2: GetVnetParameter: vnetlib path doesn’t exist so can’t open
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E2: GetSpecificProductInstallPath: could not find an InstallPath key for product
2018-01-17T07:14:57.010+02:00| inst-build-6966790| I2: VNLWorkstationInstalled: didn’t find install path for VMware Workstation
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E2: GetSpecificProductInstallPath: could not find product registry key
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E2: GetSpecificProductInstallPath: could not find an InstallPath key for product
2018-01-17T07:14:57.010+02:00| inst-build-6966790| I2: VNLPlayerInstalled: didn’t find install path for player
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E1: VNL_GetProductInstallPath: could not find a InstallPath key anywhere
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E1: VNLSpawn64BitVnetlibTask: failed to get generic product install path
2018-01-17T07:14:57.010+02:00| inst-build-6966790| E1: VNLInstallLegacyInf: Failed to handle 64-bit properly
2018-01-17 07:14:57| USBDeviceInstUtil-build-5395284| ERROR: Failed calling VNL_InstallHcmon()
2018-01-17 07:14:57| USBDeviceInstUtil-build-5395284| Freeing library: 1351221248
2018-01-17 07:14:57| USBDeviceInstUtil-build-5395284| ERROR: Failed to install hcmon
2018-01-17 07:21:56| USBDeviceInstUtil-build-5395284| End Logging

I had tried the KB article hack to manually uninstall hcmon and rename the sys file without success, but the fix along with the logs led me to go dig in the common files folder.

So I took a chance and renamed “C:\Program Files (x86)\Common Files\VMware\USB” to “C:\Program Files (x86)\Common Files\VMware\USB.bad” and ran the vSphere client install and it worked!