_StartService und _StopService unter Windows 7.

  • Hallo @all,

    ich habe unter XP ein Tool geschrieben, mit der ich auf bestimmte Funktionen von Remote Rechnern zugreifen kann.
    Also eine Art Fernzugriff.

    Nun bin ich dabei das Tool für Win 7 kompatibel zu machen und komme nicht weiter.

    Nun zum Problem:
    mit folgendem Befehl starte ich den Dienst "RemoteRegistry" um auf die Registry eines Win7 Rechners zugreifen zu können.
    _StartService('Rechnername', 'RemoteRegistry')

    wenn ich die nötigen Daten ausgelesen habe, beende ich wieder den Dienst "RemoteRegistry" mit folgendem Befehl
    _StopService('Rechnername', 'RemoteRegistry')

    Und jetzt tritt das Problem auf. Wenn ich auf das gleiche Gerät erneut zugreifen möchte bricht der Befehl _StartService('Rechnername', 'RemoteRegistry') mit @error = 5 ab.
    Also ich kann den Dienst nicht 2 mal hintereinander starten und stoppen.

    Das Merkwürdige ist, dass wenn ich das Tool beende und erneut starte es wieder funktioniert.

    Hat jemand eine Idee?

    Danke und Gruß
    Herra

  • Hallo,

    anbei ein ganz einfacher Code. Der erster Start funktioniert, beim zweiten versuch schlägt es fehl.
    Wenn du das Script wieder laufen lässt passiert das gleiche. Innerhalb eines laufenden Scripts funktioniert es immer nur ein mal.

    Error = 5 wird in Zeile 27 erzeugt

    Danke und Gruß

    PS: als Dateianhang auch die "_ServiceControl.au3"

    Spoiler anzeigen
    [autoit]


    #include <_ServiceControl.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $v_client = 'Windows7Client'

    [/autoit] [autoit][/autoit] [autoit]

    ;~ ============== erster Start ==============
    If _ServiceRunning($v_client, 'RemoteRegistry') = 0 Then
    Sleep(2000)
    $run_service = _StartService($v_client, 'RemoteRegistry')
    $error = @error
    MsgBox(0,'', $run_service)
    MsgBox(0,'', $error)

    [/autoit] [autoit][/autoit] [autoit]

    $stop_service = _StopService($v_client, 'RemoteRegistry')
    $error = @error
    MsgBox(0,'', $stop_service)
    MsgBox(0,'', $error)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;~ ============== zweiter Start ==============
    If _ServiceRunning($v_client, 'RemoteRegistry') = 0 Then
    Sleep(2000)
    $run_service = _StartService($v_client, 'RemoteRegistry')
    $error = @error
    MsgBox(0,'', $run_service)
    MsgBox(0,'', $error)

    [/autoit] [autoit][/autoit] [autoit]

    $stop_service = _StopService($v_client, 'RemoteRegistry')
    $error = @error
    MsgBox(0,'', $stop_service)
    MsgBox(0,'', $error)
    EndIf

    [/autoit]