Si lo pruebas en local, verás que es fácil obtener un error de tipo
EOleException si el servicio no está disponible. Incluso el mensaje que obtienes te lo deja claro.
Baja el servicio desde la
administración de servicios y luego ponlo
deshabilitado, para evitar que se arranque automáticamente cuando hagas la petición (ya que por defecto tiene macado araque
automático.
Ten en cuenta que al "bajar" el servicio, es posible que se paren otros que dependen de él y que luego tendrás que arrancar manualmente (o reiniciar la máquina para que se vuelvan a arrancar automáticamente).
Si pruebas con un código como este:
Código Delphi
[-]uses
SysUtils, ActiveX, ComObj, Variants, VCL.Forms, WinAPI.Windows, VCL.Dialogs;
...
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
begin
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
try
FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
except
on E:exception do begin
MessageDlg('Error, no se puede conectar al servicio de wmi. ' + sLineBreak +
'(' + E.ClassName + ') ' + E.Message,
mtError, [mbOK], 0);
Exit;
end;
end;
...
Verás que al ejecutarlo con el servicio parado (y deshabilitado) te genera el siguiente error: