
Gibt es eine Möglichkeit, einen Dienst sc
unter Windows mit (oder einem anderen Tool) zu starten und sein Arbeitsverzeichnis auf ein anderes als das C:\Windows\system32
(Standard-)Verzeichnis festzulegen?
Ich weiß, dass ich das im Quellcode des Dienstes angeben kann, aber ich suche nach einer Lösung, bei der der Quellcode des Dienstes nicht geändert werden muss.
Antwort1
Dienste werden von einer Anwendung namens Service Control Manager gestartet. Diese Anwendung befindet sich im Systemverzeichnis %WinDir%\System32
und dies ist ihr aktuelles Arbeitsverzeichnis.
Wenn der Systemdienst gestartet wird, erbt er standardmäßig alle Attribute des Service Control Managers und die in der Definition des Dienstes angegebenen Parameter.
Leider ist das aktuelle Arbeitsverzeichnis keiner dieser Parameter, wie Sie in der ChangeServiceConfigA-Funktion.
Wenn Sie das aktuelle Arbeitsverzeichnis des Dienstes ändern möchten, müssen Sie dies innerhalb des Dienstes selbst tun.