Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm zur beim Windowsstart starten! (https://www.delphipraxis.net/11088-programm-zur-beim-windowsstart-starten.html)

geisi 30. Okt 2003 19:48


Programm zur beim Windowsstart starten!
 
Kann ich mein Programm auch anders beim Systemstart starten, als mit Autostart?

Mirilin 30. Okt 2003 19:50

Re: Programm zur beim Windowsstart starten!
 
:hi:

Mit der Registry (../run). In der Codelibrary wirst du wohl fündig.

Christian Seehase 30. Okt 2003 19:57

Re: Programm zur beim Windowsstart starten!
 
Moin geisi,

oder such' hier mal nach Hier im Forum suchenISHELLLINK
Damit könntest Du einen Link im Autostartordner anlegen.

Assarbad 30. Okt 2003 21:06

Re: Programm zur beim Windowsstart starten!
 
Zitat:

Kann ich mein Programm auch anders beim Systemstart starten, als mit Autostart?
Das System startet nur einmal pro Boot. Autostarts (Verz. Autostart) werden aber pro Benutzer ausgeführt. Die einzige Möglichkeit die ich kenne, wäre ein Startup-Skript in der Machine-Policy oder unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Run wo die Programme meines Wissens nach auch nur einmal nach dem Start laufen!

SirThornberry 30. Okt 2003 21:13

Re: Programm zur beim Windowsstart starten!
 
current_user\software\microsoft\windows\currentVer sion\run
gibts noch, wird wie der autstart bei jedem anmelden augeführt

Christian Seehase 30. Okt 2003 21:30

Re: Programm zur beim Windowsstart starten!
 
Moin Assarbad,

Zitat:

Zitat von Assarbad
Autostarts (Verz. Autostart) werden aber pro Benutzer ausgeführt

Es gibt auch einen All Users Autostart Ordner. ;-)

Assarbad 30. Okt 2003 22:26

Re: Programm zur beim Windowsstart starten!
 
Exakt ... und der wird auch per User ausgeführt. Nur eben per User für alle User die sich je einloggen ... offensichtlich ein Mißverständnis deinerseits.

Beispiel (Autostart-Verzeichnisse, symbolisch):
Code:
Otto\Autostart
Karl\Autostart
All Users\Autostart

Loggt sich Karl ein, wird "Karl\Autostart" UND "All Users\Autostart" ausgeführt.
Loggt sich Otto ein, wird "Otto\Autostart" UND "All Users\Autostart" ausgeführt.
Beispiel (Autostart-Eintrag in Registry, symbolisch):
Code:
Otto\Run
Karl\Run
HKEY_LOCAL_MACHINE\Run = HKLM\Run

Loggt sich Karl zuerst ein, wird "Karl\Run" UND "HKLM\Run" ausgeführt.
Loggt sich Otto danach ein, wird "Otto\Run" ausgeführt und das wars.

ODER

Loggt sich Otto zuerst ein, wird "Otto\Run" UND "HKLM\Run" ausgeführt.
Loggt sich Karl danach ein, wird "Karl\Run" ausgeführt und das wars.
Jetzt klar???

All Users ist nur ein Hilfsprofil welches für ALLE User gilt. HKLM\Run wird zwar auch erst beim Logon und nicht eher gestartet (das Policy Skript hingegen schon vor dem Logon, zumindest jedoch unabhängig vom Logon ... es gibt natürlich keine Garantie, daß das Startup Skript schneller ist als der Logon ;)), aber nur einmal pro Boot des Systems. So daß immer nur der erste Benutzer in den Genuß dieses Programmes kommt.

Dieses Verhalten läßt sich IMO aber auch noch beeinflußen.

Noch eine Idee zur Frage:
Man kann auch unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon den Wert UserInit anpassen. Das entsprechende Programm wird allerdings im SYSTEM-Kontext ausgeführt.

F.W. 4. Nov 2003 16:19

Re: Programm zur beim Windowsstart starten!
 
Ich habe sowas in mein Programm gebracht, wird beim Ok-Klicken übernommen.
Ich habe nur ein Problem:
Das ganze wird über eine CheckBox gemacht, und die soll ja auch angehakt sein, wenn das Programm geöffnet wird und der Key vorhanden ist. Wie kann ich das überprüfen?

Luckie 4. Nov 2003 16:22

Re: Programm zur beim Windowsstart starten!
 
Kuck doch, ob der Schlüssel vorhaben ist und setzt entsprechend den Haken in der der Checkbox.

F.W. 4. Nov 2003 16:58

Re: Programm zur beim Windowsstart starten!
 
Habe ich auch schon gemacht, mit KeyExists, hat aber nicht funktioniert.

Kann mir mal jemand 'n Codebeispiel schicken?

Luckie 4. Nov 2003 17:03

Re: Programm zur beim Windowsstart starten!
 
Zeig erstmal, was du schon hast, dann müsen wir nicht von vorne anfangen.

The-X 4. Nov 2003 17:23

Re: Programm zur beim Windowsstart starten!
 
hi,

versuch's mal mit folgendem:
OpenReadOnly (damit du keine Fehlermeldung bekommst wenn der Schlüssel nicht existiert
bzw.
ValueExists (um zu guggn ob der Wert existiert ;)

F.W. 4. Nov 2003 19:58

Re: Programm zur beim Windowsstart starten!
 
Hier ist der Code:
Delphi-Quellcode:
 Reg := TRegistry.Create;
 if Reg.KeyExists('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run') then
    StartBox.Checked := True else
    StartBox.Checked := False;
 Reg.Free;
Aber das Ding ist nie angehakt.

Luckie 4. Nov 2003 20:04

Re: Programm zur beim Windowsstart starten!
 
Was für einen Fehler bekommst deu denn zurück? (GetLastError) Eventuell erst öffen den Schlüssel? Und wie wäre es mit einem klitze kleinen Ressourcenschutzblock?

Christian Seehase 4. Nov 2003 20:07

Re: Programm zur beim Windowsstart starten!
 
Moin F.W.,

hast Du für die CheckBox zufälliger Weise einer OnClick Routine?
Diese wird bei Zuweisung eines Wertes an Checked aufgerufen.

F.W. 5. Nov 2003 13:48

Re: Programm zur beim Windowsstart starten!
 
Ich bekomme keine Fehlermeldung zurück, die CheckBox ist nurnicht angehakt.

Kann es sein, dass ich noch den Namen der Exe irgendwie anhängen muss?

Christian Seehase 5. Nov 2003 21:47

Re: Programm zur beim Windowsstart starten!
 
Moin F.W.,

Zitat:

Zitat von F.W.
Kann es sein, dass ich noch den Namen der Exe irgendwie anhängen muss?

Wenn Du nur wissen willst, ob der Key vorhanden ist, nicht.
Ansonsten müsstest Du den Key öffnen und mit ValueExists prüfen, ob der von Dir eingetragenen Wert da drin steht, bzw. mit ReadString prüfen, ob er auch den gewünschten Inhalt hat.

Du kannst Dir übrigens die if Abfrage einsparen:
Delphi-Quellcode:
StartBox.Checked := Reg.KeyExists('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run');

F.W. 6. Nov 2003 15:11

Re: Programm zur beim Windowsstart starten!
 
Danke, dann werde ich also den Key öffnen und mit ValueExists prüfen :coder: .

PS:
Zitat:

Du kannst Dir übrigens die if Abfrage einsparen
Stimmt, danke! :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz