>FYI, this still doesn't work when launching a vbscript to do WMI calls

Its because scripting host starts new thread. That thread does not inherit security context from HostMonitor's thread but uses security context of service/process (because ImpersonateLoggedOnUser affects current thread only).

So, to start script under specified user account HostMonitor's service must be started under that account. Of course script can be executed as external program: its Ok for actions but unuseful for tests.

The tray icon doesn't appear if you run the service with an account other than LocalSystem - we wouldn't be able to make any changes, so the only other alternative would be to not run it as a service, which isn't an option.

>The tray icon doesn't appear if you run the service with an account other than LocalSystem - we wouldn't be able to make any changes

To make changes you may start HostMonitor as application. I think you do not make changes too often?
Anyway we cannot change Windows behavior. We will create separate application for remote management of HostMonitor, it will help in your case as well.