![]() |
Programmstart durch Autostart - kann man das herausfinden?
Hallo DP!
Ich habe mal eine Frage zum Thema Windows-Start und Autostart. Wenn ich zum Beispiel die Programme ICQ Lite und den Windows Messenger habe (ich habe noch ein paar mehr Beispiele aber 2 dürften reichen), dann liegen die ja auf Wunsch im Autostart von Windows - In der Registry eingetragen. Damit man den Autostart besser vom normalen Start unterscheiden konnte wurden entsprechende Parameter zum Starten angehängt. Und jetzt das Problem bzw. meine Frage: Kann man herausfinden ob ein Programm direkt beim Systemstart gestartet wird (also durch das durchgehen aller Autostarts von Windows) oder erst danach? Bei mir ist es nämlich so, ich kann ICQ und MSN nicht mit dem Parameter manuell starten, es klappt bloß wenn der Parameter weg ist. Flare |
Re: Programmstart durch Autostart - kann man das herausfinde
Du meinst, Du willst wissen, welche Programme alle im Autostart von Windows liegen?
Das sind folgende Schlüssel in der Registry: HKCU\Software\Microsoft\Windows\CurrentVersion\Run (für den aktuellen Benutzer) HKLM\Software\Microsoft\Windows\CurrentVersion\Run (für alle Benutzer) oder im Startmenü: Start -> Programme -> Autostart Aber ich habe dazu auch mal ein Programm geschrieben: ![]() Nachtrag: Du kannst auch im Startmenü: Start -> Ausführen msconfig eingeben und dann auf "Systemstart" klicken. |
Re: Programmstart durch Autostart - kann man das herausfinde
Nein, ich möchte herausfinden OB man herausfinden kann OB ein Programm durch den Windows Autostart gestartet wurde oder nicht, das scheint nämlich ICQ und MSN zu können...
Wo alle möglichen Autostarts liegen weiß ich schon :drunken: Flare P.S.: Ich habe elber dazu ein Programm geschrieben :stupid: |
Re: Programmstart durch Autostart - kann man das herausfinde
Also normale Programme wie ICQ etc. werden über die Autostart gestartet.
Sogenannte Dienste (sagen wir mal das sind "Spezialprogramme") werden nach dem Booten des Betiebssystems und VOR dem Laden der Programme in der Autostart ausgeführt. Über z. B.
Delphi-Quellcode:
Kannst Du prüfen ob ein Programm in der Registry steht. Dazu musst Du aber den Runnamen rausfinden.
Uses registry...
function IsAppInRun(RunName: string): Boolean; var Reg: TRegistry; begin Reg := TRegistry.Create; with Reg do begin RootKey := HKEY_LOCAL_MACHINE; OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); Result := ValueExists(RunName); CloseKey; Free; end; end; Nimm dazu Regedit. Weitere Codes dazu hier: ![]() Roter Kasten: Sorry, aber wenn in der Autorun das Programm steht, wird es auch ausgeführt. Eine Routine, um zu prüfen ob Autostart(Programmname)=True ist, gibt es nicht. Du kannst nur nachsehen, ob das Programm in der Registry und RUN steht. CU! Go2EITS |
Re: Programmstart durch Autostart - kann man das herausfinde
Sorry, dann hab ich Dich falsch verstanden....
Aber wenn das Programm gestartet ist und Du es nicht manuell gestartet hast und es auch im Autostart steht, dann wurde es wohl durch den Autostart von Windows gestartet :wink: Zusätzliche Parameter beim Autostart sind nicht unbedingt erforderlich, meißtens werden die halt übergeben, damit das Programmm minimiert im Systray gestartet wird und nicht als sichtbares Fenster. Bei einem eigenen Programm kannst Du die Parameter per ParamStr() auslesen, nicht aber ob es durch den Autostart oder irgendwie anders gestartet wurde - zumindest meines Wissens nach... :roll: |
Re: Programmstart durch Autostart - kann man das herausfinde
Coole Sache, dass ich hier nur zur Hälfte verstanden werde, aber wenigstens hat Martin K eine Antwort gesagt die ich mir auch schon dachte.
Aber das ganze nochmal ganz deutlich! Ich habe ein Programm programmiert womit man Auostarts von Windows extrahieren kann und mit meinem Programm danach (irgendwann später) starten kann. Allerdings startet er die Programme manchmal nicht, was mit dem Parameter zu tun hat. Also immer die selben Programme starten nicht, manche jedoch starten. Die Idee die angebracht wurde ist, dass das Programm nachguckt ob es im Autostart steht wenn es per speziellem Parameter gestartet wird und beendet sich wieder falls dem nicht so ist. Kann das jemand bestätigen oder gibts da nen noch einfacheren Trick den ich nicht kenne? Flare |
Re: Programmstart durch Autostart - kann man das herausfinde
Wenn Du mit deinem Programm ein Programm startest was im Autostart steht, startest Du es dann mit den selben Parametern, die auch im Autostart stehen?
1. Möglicherweise läuft das Programm vorher noch und es verhindert von sich aus, dass das Programm selbst 2x gestartet wird 2. wenn Du es startest mit den Parametern wie im Autostart, siehst Du vielleicht gar nicht dass es gestartet wurde, weil es versteckt ist Schau mal im Taskmanager unter "Prozesse", ob dort die exe von dem entsprechenden Programm aufgelistet ist, also ob: 1. es schon vorher läuft, bevor Du es mit deinem Programm startest 2. es gestartet wurde mit deinem Programm, nur halt versteckt |
Re: Programmstart durch Autostart - kann man das herausfinde
Einige Programme starten auch nicht wenn Du die Parameter übergibst, genauso wie Programme, die keine Parameter benötigen.
Das könnte daran liegen, dass einige Programme ihren eigenen Path abfragen, daher starten die Programme nicht (weil Du aus einem anderen Verzeichnis startest, wohl mit shellexecute, in dem nicht die zum Programm gehörigen Dateien liegen) oder stürzen sogar ab, wenn sie Dateien beim Start abfragen, repektive einlesen wollen, die dann aber nicht zu finden sind. |
Re: Programmstart durch Autostart - kann man das herausfinde
Es wurde nicht gestartet (ich überwache natürlich alle Autostarts außer die System-notwendigen und den Ordner, aber da steht ICQ und MSN nunmal nicht drin :drunken:
Im Taskmanager gucke ich natürlich auch immer rein, es ist davor nicht gestartet und danach auch nicht. Versteckt laufen sollten die Programme nicht (wieso sollte ICQ dies tun :gruebel: ) Ich starte es mit den selben Parametern (es gibt auch die Funktion die Atostarts wieder zurückzuschieben, dann muss ja auch die Kompatiblität geleistet sein) Die Programme starten wobald ich den Parameter weglasse (mit ICQ und MSN getestet) Flare |
Re: Programmstart durch Autostart - kann man das herausfinde
Schreib doch einfach mal ein eigenes Programm in den Autostart und lass dir in dem Programm das Verzeichnis mit GetCurrentDir anzeigen.
Dann weißt Du, was die Programme aus dem Autostart für ein Arbeitsverzeichnis verwenden, das Du dann auch beim ausführen mit ShellExecute übergeben musst. Wenn das Verzeichnis immer das aktuelle Verzeichnis ist in dem sich das Programm befindet, dann übergebe einfach nil bei ShellExecute als Arbeitsverzeichnis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz