Ergänzungen
Dienste unter Windows 95
Es bestehen keinerlei Einschränkungen bezüglich der Programmausführung von als Dienst gestarteten Programmen. Auch grafische Anzeigen werden genau so aufgebaut wie gewohnt und sind also vollkommen vor der eigentlichen Anmeldung nutzbar. Laden Sie den Dateimanager als Dienst und Ihnen steht der gesamte Umfang auch ohne Anmeldung zur Verfügung.
Dies ist natürlich auch ein
gewisses Sicherheitsrisiko, da der einzige Weg diese
Funktionalität zu unerlaubten Zwecken zu mißbrauchen, die
Einschränkung der Userrechte ist und so unter diesen Anmeldungen
die Einrichtung neuer Dienste nicht statthaft ist. Solche
differenzierten Userrechte können unter Windows 95 mit dem
Policy Editor erzeugt werden.
( Auf der Install CD )
Einzige Einschränkung ist wirklich, wie im Artikel schon beschrieben, Programme die sich auf die Taskbar als Symbol setzen, da diese zum Start des Dienstes noch nicht verfügbar ist.
Dienste unter Windows NT 4.0
Ich finde es gut, das unter NT auch in dieser Angelegenheit ein weit größeres Maß an Sicherheit vorliegt. Ein Dienst unter NT ist zwar mit Hilfe von INSTSRV und SRVANY auch kein Problem, aber erstens ist hier von Anfang an die Trennung der Userrechte vollzogen und somit kaum eine Lücke unberechtigter Weise einen solchen Dienst zu installieren und zweitens werden keinerlei grafische Anzeigen unterstützt. Dies ändert sich auch nicht nach der Anmeldung. Ein permanenter Timer mit Form1.Show wird sich den Wolf laufen, es wird kein Fenster aufgebaut. Einzige mir einfallende Möglichkeit, aus dem Dienst heraus ein Programm aufzurufen.
Ansonsten aber ist das als dienst laufende Programm voll funktionstüchtig, was auch Dateizugriffe angeht und da es ja ggf. Unter eigenem Account (und der ggf. Mit Adminrechten) laufen kann, hätte man hier eine Möglichkeit auch unter einer Anmeldung mit Gast oder Benutzerrechten bestimmte sonst nicht zulässige Operationen auszuführen.
Sysdiff
Sysdiff ist ein weiteres Tool aus der MS Schmiede. Mit ihm kann ein sogenannter Systemsnapshot erstellt werden und dieser Istzustand in eine Datei geschrieben werden.
SYSDIFF /SNAP NamederDatei
Anschließend kann man seine Installation durchführen, in unserem Fall das Anlegen des Dienstes, und diese Veränderungen zum Snapshot in eine weitere Datei (Differenzdatei) schreiben.
SYSDIFF /DIFF NamederDatei NamederDiffdatei
Diese ermittelte Differenzdatei ließe sich dann auf PCs ohne diesen Dienst ausführen ...
SYSDIFF /APPLY /M NamederDiffdatei
.. ,so das ohne viel Aufwand auch hier der Dienst wieder eingerichtet werden kann.
Natürlich würde auch diese Installation Adminrechte benötigen.
Wichtig! Durch das Ausführen der Diffdatei werden zwar alle notwendigen Eintragungen erledigt, der Dienst erscheint aber erst bei einem Neustart des PCs in der Systemsteuerung/Dienste.
Parameter
Es gibt standardmäßig drei Eigenschaften für die Startart eines Dienst.
1 Automatisch / 2 Manuell / 3 Deaktiviert
Wenn sie einerseits die Registry unter dem Schlüssel eines Dienstes und andererseits das Dienstefenster in der Systemsteuerung geöffnet haben und die Startart ändern, ist erkennbar das unter dem Eintrag "START" sich der Wert ändert. Dabei erhält Automatisch die 2 / Manuell die 3 und Deaktiviert die 4.
Alle anderen Werte sind nicht über das Eigenschaftsfenster der Dienste zu erzeugen.
Tragen sie aber in der Registry eine 0 oder eine 1 als Wert ein und öffnen das Dienstefenster in der Systemsteuerung neu, so sieht man, das für den Wert 0 = "Neustart" und für 1 = "System" steht.
Ich gehe davon aus, das beide Werte nur während einer Sitzung geändert werden können, wobei Neustart scheinbar für die Unterscheidung steht, ob der PC neu gestartet wurde oder ob sich nur ein neuer User angemeldet hat. Der Wert 1 für System kann sicher nur von bestimmten Diensten genutzt werden, vielleicht Dienste, die in Abhängigkeit von anderen Diensten gestartet werden.
Beispielprogramm DIENSTZEIT
Um zu dem geschriebenen auch einen Test durchführen zu können wurde das Programm Dienstzeit.exe erstellt. ( Quellcode als VB4/32Bit anbei )
Dieses kleine Programm hat zwei Funktionen.
1. Aufbau eines Fensters in der
rechten, unteren Ecke und Ausgabe der aktuellen Systemzeit.
2. Anlegen einer Datei und Schreiben der aktuellen Systemzeit in
die Datei. Timer = 500
Wenn dieses Programm unter
Windows95 als Dienst einrichten wird, so wird noch vor der
Anmeldung
(soweit überhaupt eine besteht !) das Programm ausgeführt und
es erfolgt die visuelle Bestätigung des Programmstarts. Der
Verweiß in der Registry muß dann natürlich auf den Pfad
zeigen, in das das Programm kopiert wurde und die zu startende
Datei heißt dann Dienstzeit.exe.Außerdem wird die Datei
xxxinfo.txt angelegt, in die die Uhrzeit eingetragen wird.
Wenn dieses Programm unter Windows NT (hier 4.0 als Test) eingesetzt wird, so wird keinerlei grafischer Fensteraufbau erfolgen. Aber die Funktion des Schreibens der aktuellen Systemzeit in die Datei xxxinfo.txt wird als Beweis für Erfolg (oder Mißerfolg) ausgeführt.
Der Aufruf zum Einrichten des Dienstes könnte dann lauten
INSTSRV Dienstzeit C:\WINNT\SYSTEM\SRVANY.EXE
Der Eintrag unter dem Service Schlüssel Dienstzeit\Parameters lautet dann
Application = "LW:\Pfad\Dienstzeit.exe" und AppDirectory = "LW:\Pfad".
SYSDIFF Beispiel DIENSTZEIT
Nur nutzbar, wenn gleiche Verzeichnisstruktur besteht.
C:\WINNT ; C:\WINNT\SYSTEM32 als
Systemverzeichnisse
D:\TEST7 als Programmverzeichnis (Dienstzeit.exe dorthin
kopieren)
Außerdem muß natürlich auch die SRVANY.EXE im System32 Verzeichnis existieren.
NTSRV.OCX
Einen weiteren Weg ein Programm als Dienst unter windows NT 4.0 laufen zu lassen ist ein ActiveX Control von Microsoft.
NTSRV.OCX ins System32 Verz. Kopieren und über REGSVR32 NTSRV.OCX registrieren, dann über Zusatzsteuerelemente in ein VB 4 bzw. 5 Projekt einbinden.
Leider hat ein Test bisher kein
Erfolg gezeichnet, soweit man Dr.Watson nicht als Erfolg
versteht, da im Moment keinerlei Dokumentation zur Verfügung
steht.
Das Control ist kostenfrei nutzbar, MS bietet aber keinerlei
Support.
© A.Gamper / Mai 1998