Entwickler-Ecke
Sonstiges (Delphi) - automatischer start meines programmes beim booten... ;O)
Murmel - Do 20.03.03 10:04
Titel: automatischer start meines programmes beim booten... ;O)
ich möchte das mein programmchen (eine sicherheitssoftware) automatisch beim booten starten soll... das ganze ist eigentlich denkbar einfach (eintrag in regedit, sytemdateien etc. oder in den autostartordner) nun handelt es sich bei meinem programmchen um eine sicherheitssoftware, d.h. diese darf der user nicht deaktivieren oder umgehen können (nur mit passwort)... also muß ich es schaffen das mein programm nicht durch hochfahren in den abgesicherten Modus umgangen werden kann... nun meinte ein netzwerktechniker aus unserem hause ich müsste das ganze als dienst anmelden, ist das die lösung? und wenn ja, wie kann ich mein programmchen als dienst anmelden?
gruß murmel
Motzi - Do 20.03.03 10:33
Ja, du musst einen Service oder Dienst schreiben. Es gibt zu diesem Thema schon mehrere Diskussionen, einfach mal die Suchmaschine anwerfen.
Noch ein Hinweis: Das Thema Services und Sicherheit sind ziemlich komplex, die entsprechende Fachliteratur sollte da also nicht fehlen! Ich kann dir da nur das Buch "Programming Windows Security" von Keith Brown ans Herz legen!
bis11 - Do 20.03.03 22:03
Hi,
Du gehst einfach in Delphi auf Neu und dann auf Service-Anwendung. Dann schreibst Du Deinen Quelltext in das Ereignis
OnExecute. Du kannst natürlich noch andere Funktionen oder Proceduren mit einbringen. Bedingung, es darf keine Benutzerintervention von Deinem Programm ausgehen. Wenn Du eine machen möchtest, verweise ich auf das Tutorial von der Seite
Delphi-Source [
http://www.delphi-source.de]. Wenn Du es dann das ganze kompiliert hast, startest Du die EXE mit dem Schalter /install um den Dienst zu installieren oder mit dem Schalter /uninstall um den Dienst zu deinstallieren. Mit dem Schalter /silent, schaltest Du noch das Meldungfenster ab, welche bei der Installation und Deinstalltion angezeigt wird. Was ich aber nicht genau weiß, gibt es den Schalter /silent erst ab Delphi 5.
Andreas Pfau - Fr 21.03.03 20:51
Ich bin ja kein Profi auf dem Gebiet... aber geh' mal in die eingabeaufforderung, und tipp "msconfig" ein. Dan kannst du alle Services deaktivieren. Oder irre ich? Wie gesagt, eigentlich nicht mein Fach...
bis11 - Fr 21.03.03 21:29
Hi,
mit net start kannst Du sehen, welche Dienste gestartet sind. Den gleichen Befehl plus einen Namen von einem Dienst, kannst Du den angegeben Dienst starten oder mit net stop Dienstname den angegebenen Dienst wieder stoppen.
Ansonsten, wenn Du wissen willst, was für Dienste installiert sind, gehste in die Systemsteuerung und dann Dienste.
Andreas Pfau - Fr 21.03.03 22:16
Auf was ich rauswollte, war eher: sind Services wirklich sicherer als Autorun? di ekann man auch aus dem "autorun" löschen. Oder?
MSCH - Fr 21.03.03 22:31
Hmm,
services sind eher was für NT, da muß sich kein User anmelden um den Dienst (deine Anwendung) zu starten. In der Autorun (eher W9x-PCs) muss sich immer einer Anmelden (sofern Netwerkkram installiert ist).
Ansonsten gibts keine "unterschiede".
Ein Service kann nur u.U. mit dem Nutzer aggieren, ein Programm via Autostart ist eine normale Anwendung.
Beides Kann der Nutzer ausschalten (Autorun: Registry, Dienst: Manager)
Was meinst du mit sicherer? Beides ist in Bezug auf die Nutzermeinung unsicher weil er kanns deinstallieren.
Oder: W2K - Dienst als Admin Installieren - User keine Rechte auf Dienste geben. fertig.
Grez
MSCH
SMI - Sa 22.03.03 03:39
Es gibt da eine brutalo Methode. Die tatsächlich funktioniert!
Auf jedem Windows Computer gibt die runonce.exe, diese wird bei jedem Start ausgeführt, und zwischen Netwerksanmeldung und der Shell ausgeführt wird. Da Windows so lange wartet bis Datei beendet wurde kann man nun genau diese Datei umbenenen z.B. in runonce2.exe, und durch eigene runonce.exe ersetzen. Die wird dann zwangsläufig jedesmal mit Windows gestartet.
Da RunOnce.Exe nicht einfach so weggelöscht/ersetzt werden kann muss das "neue" RunOnce bei jedem Start das "original" runonce aufrufen, mit allen Startparametern, und genauso wie es Windows auch macht warten bis es beendet ist.
Da runonce auch für Installationen benötigt wird sollte man verhindern, dass das "neue" runonce während eines Setup im normalen Windows Betrieb gestartet wird. Das bedeutet man muss bei jedem Programmstart überprüfen, ob die Shell gestartet ist, wenn sie da ist wird das alte runonce mit allen Parametern aufgerufen, wobei man die Fenster des "neuen" RunOnce verbergen sollte! Ansonsten erschein während eines Setups aus dem nirgendwo das Fenster des "neuen" Runonce.
SMI
Motzi - Sa 22.03.03 14:38
Services können
nur von einem Administrator installiert/deinstalliert werden.
| Platform SDK hat folgendes geschrieben: |
OpenSCManager
Only processes with Administrator privileges are able to open a database handle that can be used by the CreateService and LockServiceDatabase functions. |
D.h. nur ein Administrator kann mit oben genannten Programmen einen Dienst deaktivieren (da der Dienst in der Logon-Session des jeweiligen Benutzers läuft und das Process-Token mit den Privilegien von dieser Logon-Session abhängt).
Services können normalerweise nicht mit dem User interagieren, da sie einer anderen WindowStation zugeordnet sein...
Andreas Pfau - Sa 22.03.03 15:28
Ahso... ich binhalt Admin (da ich der einzige User bin). kann sein. Dann wären Services eine gute Lösung.
Delete - Sa 22.03.03 16:06
@Andreas: (Als Ergänzung zu dem, was Motzi geschrieben hat.) NT und 2000 enthalten, IMHO, kein "msconfig". Damit wäre das Problem einzig auf Win XP beschränkt. Wobei es kein Problem ist, denn "msconfig" lässt sich nur mit Admin-Rechten aufrufen. Zumindest ist das bei mir so. Aber ich habe mein XP ohnehin sehr restriktiv eingestellt.
@SMI: Das ist die beste Anleitung zum Thema: Wie könnte ich mir mein System ruinieren?, die ich je gelesen habe. Der Weg mag funktionieren, aber es stecken viele potentielle Fehlerquellen drin. Das Risiko, sich sein Windows gründlich zu versauen, wäre mir persönlich zu hoch. Das grenzt außerdem schon fast an Trojanertaktik.
Die Frage wäre zudem, ob der Systemdateienschutz von Win XP z.B. solche Änderungen nicht unterbindet bzw. veränderte Systemdateien stillschweigend durch die Sicherheitskopie ersetzt.
Delete - Sa 22.03.03 16:26
Das will ich aber schwer hoffen, dass Windows sowas verhindert.
SMI - Sa 22.03.03 17:55
@MathiasSimmack
Ich kann dich beruhigen, so einfach ruiniert man Windows nicht.
Das beschriebene Programm läuft seit über einem Jahr stabil auf mehreren Informations Kiosken.
Da es nur eine "exe-Datei" ist sind die Fehlerquellen sind eigentlich gering, alles Wichtige habe ich ja erwähnt.
@ Luckie & MathiasSimmack
Der Schutz von System Dateien ist so träge und schlecht, dass man ihn mit einer einfachen Batch Datei überlisten kann, danach glaubt dann Windows die Datei sei ein Original und "verteidigt" sie sogar! Dashalb kann ich nur empfehlen ihn komplett auszuschalten, dabei spart man sich dann auch noch so etwa 300 MB ein!
SMI
Delete - Sa 22.03.03 19:23
Also ist die Idee doch nicht so universell wie gedacht. Sicher, es wird funktionieren. Aber ein 2000/XP-Benutzer muss also zusätzlich noch die Systemdateiwiederherstellung "überlisten", nur damit sein Programm immer beim Booten startet ... Also der Aufwand ist eindeutig zu groß.
Fazit: Schreib einen echten NT-Dienst, Murmel. Der kann von normalen Usern nicht beendet oder gelöscht werden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!