Hallo zusammen,
ich bekomme es leider einfach nicht hin, das ich einen Dienst per
WMI starten kann! Habe folgenden ausprobiert...
Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
FLocator: ISWbemLocator;
FServices: ISWbemServices;
FProcess: ISWbemObject;
FMethod: ISWbemMethod;
FInParam: ISWbemObject;
FOutParam: ISWbemObject;
FProperty: ISWbemProperty;
FPropValue: OleVariant;
begin
FLocator := CoSWbemLocator.Create;
try
if FLocator <> nil then
begin
FServices := FLocator.ConnectServer('.', 'root\cimv2', '', '', '', '', wbemConnectFlagUseMaxWait, nil);
if FServices <> nil then
begin
FServices.Security_.ImpersonationLevel := wbemImpersonationLevelImpersonate;
FProcess := FServices.Get('Win32_Service', 0, nil);
FMethod := FProcess.Methods_.Item('StartService', 0);
FInParam := FMethod.InParameters.SpawnInstance_(0);
FProperty := FInParam.Properties_.Add('Name', wbemCimtypeString, False, 0);
FPropValue := 'Alerter';
FProperty.Set_Value(FPropValue);
FOutParam := FProcess.ExecMethod_('StartService', FInParam, 0, nil);
end;
end;
finally
FServices := nil;
FLocator := nil;
end;
end;
Bekomme dann aber leider eine Zugriffsverletzung bei ...
FInParam := FMethod.InParameters.SpawnInstance_(0);
Ich finde einfach den fehler nicht, habe die Klasse mit der Methode rausgeushct, dann einen Parameter Name mit den Dienstnamen und zum schluss die Methode mit dem Wert Ausführen. Sollte eingentlich gehen finde ich!
Könnt ihr mir da helfen ?
BIG BIG THX
Cyberbob