So, weil ich ein netter Mensch bin, habe ich mal ganz gemütlich den kompletten Artikel aus der c't herausgeschrieben. Wer darin irgendwelche Tipp-Fehler findet darf sie behalten.
Unter falscher FlaggeProgramme ohne Nutzeranmeldung startenWenn unter Windows 2000 und XP ein Programm auch dann laufen soll, wenn niemand angemeldet ist, startet man es als Dienst. Damit das mit allen Programmen klappt, muss man nachrüsten.
Es gibt Programme, von denen man sich wünscht, dass sie unter Windows 2000 oder XP stets laufen, und zwar unabhängig davon, ob ein Anwender angemeldet ist oder nicht. Beispiele dafür sind eine Datenbank, die jederzeit im Intranet zugänglich sein soll, oder ein digitaler Keuschheitsgürtel, der dauerhaft die USB-Schnittstalle überwacht, damit nicht jemand unbefugt mal eben Daten vom PC klauen kann. Wer vor dem gang aus dem Haus wichtige Dokumente vergessen hat, kann sie so auch via SSH vom heimischen PC herunterladen.
Normalerweise setzen die hierfür nötigen Programme voraus, dass sich an Windows 2000 oder XP jemand angemeldet hat. Doch wenn mehrere Anwender gemeinsam den PC nutzen, ist schnell Schluss mit lustig: Sobald jemand den PC neu startet, sind die still im Hintergrund laufenden Programme beendet. Um sie beim Neustart wiederzubeleben, bietet Windows zwar rund 50 verschiedene Autostart-Methoden an, doch in Fall scheitern sie alle: Wenn sich niemand anmeldet. Abhilfe schafft, die nötigen Programme als so genannte "Dienste" laufen zu lassen.
VermittlerZuständig ist der Windows-eigene "Service Control Manager" (SCM): Er vermag Programme als Dienste zu starten. Das klappt aber nur, wenn das Programm bei der Installation und Start auf die Steuerkommandos des SCM korrekt reagiert. Solche Reaktionen sind bei den meisten Programmen aber nicht implementiert, weshalb der Versuch scheitert, sie als Dienst zu starten. Mit einem Trick klappt es aber doch.
Voraussetzung ist ein kleines Tool namens Srvany.exe, welches Microsoft zum Download bereitstellt, zu beziehen via Soft-Link. Es ist auch in den Resource Kits von Windows NT, 2000 und XP enthalten. Es hängt sich zwischen SCM und ein beliebiges Programm und übernimmt für letzteres die Reaktion auf die Steuerkommandos des SCM.
Die Installation ist etwas umständlich. Zuerst packt man Srvany.exe in ein Verzeichnis, beispielsweise in den Ordner System32 im Windows-Verzeichnis. Anschließend öffnet man die Eingabeaufforderungen und gibt dort die Anweisung
sc create <Dateiname> binPath= c:\windows\system32\srvany.exeein. Das kleine Tool Sc.exe ist bei XP bereits enthalten, Nutzer von 2000 können es bei Microsoft herunterladen. Der Dienstname ist frei wählbar, etwa "MeinDienst1", er darf allerdings nicht mit den Namen eines bereits vorhandenen Dienstes identisch sein. Zwischen "binPath=" und der Pfadangabe muss ein Leerzeichen stehen.
Anschließend öffnet man den Registry-Editor und hangelt sich zum Schlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Dienstname> durch. Dort erstellt man einen neuen Unterschlüssel namens "Parameters". Darin landen eine oder mehrere neu zu erstellende Zeichenfolgen: Die Zeichenfolge "Application" erhält als Wert den Namen und Pfad des Programms, welches man eigentlich als Dienst starten will, also beispielsweise "C:\Programme\Server\Server.exe". Falls es notwendig ist, beim Programmaufruf Parameter zu übergeben, trägt man die in die Zeichenfolge "AppParameters" ein. Auf Wunsch kann man auch das Arbeitsverzeichnis des Programms über die Zeichenfolge "AppDirectory" festlegen.
Ein Sonderfall sind Skriptsprachen. wer ein Skript als Dienst laufen lassen möchte, muss als zu startendes Programm das zum Ausführen des Skriptes nötige Programm angeben; Im Fall einer Batch-Datei weist man der Zeichenfolge "Application" also den Wert "C:\Windows\System32\Cmd.exe" zu und trägt als Wert von "AppParameters" "/c c:\Programme\Batch.bat" ein. Das "/c" weist die Cmd.exe an, den Befehl in der anschließenden Zeichenfolge auszuführen und sich anschließend zu beenden. Soll Cmd.exe stattdessen weiterlaufen, nutzt man "/k". VB-Skripte funktionieren ähnlich: Hier ist bei "Application" als Wert "C:\Windows\System32\Wscript.exe" einzutragen und bei "AppParameters" der Pfad zum Skript selbst.
Anschließend öffnet man in der Computerverwaltung die "Dienste", sucht nach dem Dienstnamen und konfiguriert in den Eigenschaften den Starttyp auf "Automatisch". Nach dem nächsten Neustart läuft das Programm auch ohne Anmeldung. Beachten sollte man, dass alle Ausgaben des neuen Dienstes ohne Anmeldung eines Anwenders grundsätzlihc unsichtbar bleiben. Doch auch nach der Anmeldung ist erst mal nichts zu sehen. Abhilfe schafft in den Eigenschaften des Dienstes unter "Anmelden" ein Häkchen vor "Datenaustausch zwischen Dienst und Desktop zulassen".
Für Faule...Wem das alles zu mühselig ist, kann eine kleine Batch-Datei namens PaD.bat nutzen, die wir via Soft-Link zum Download bereitstellen. Sie setzt voraus, dass sich Srvany.exe entweder im Windows-Verzeichnis oder im System32-Ordner befindet. Unter 2000 muss zudem das Tool Reg.exe aus der Support.cab von der Setup-CD installiert sein. Die Bedienung ist simpel: Einfach auf der Kommandozeile
pad.bat <Dienstname> <Pfad und Name des Programms> <Optionen>eingeben und den Rest erledigt PaD.bat. Wenn Name oder Pfad des als Dienst zu startenden Programms Leerzeichen enthält, muss man diese Angabe in Anführungszeichen setzen. Die Batch-Datei konfiguriert den neuen Dienst nciht für den Datenaustausch mit dem Desktop, wer das möchte, muss es von Hand nachholen.
Soft-Link 0406234