Prog automatisch in Autostart
-
Könntest du mir da etwas weiterhelfen und welche möglichkeit ist die bessere und funktioniert auch bei englischen systemen die einen autorun ordner haben und keine autostart.
mfg
Tom
-
Hallo
dann nimm die Registry.
Schau dir die Klasse TRegistry in der BCB-Hilfe an, dort ist auch ein beispiel.
Dann must du dir nur noch die notwendigen Keynamen aus der Registry suchen, um die dann im Programm zu überprüfen bzw. zu ergängen lassen.bis bald
akari
-
Danke soweit mal werd mich gleich auf die Suche machen.
Gruß,
Tom
-
Jetzt hab ich noch ne Frage,
wo muss ich den Key den in der Registry eintragen?
kann es sein, dass es unter:
HKEY_USERS -> S-1-5-21-29..... -> Software -> Microsoft -> Windows -> CurrentVersion -> Run
gehört???
mfg
Tom
-
Hallo
ja das ist der Benutzer-spezifische Key.
in HKEY_LOCAL_MACHINE ist der benutzerunabhängige Key.Welchen du willst must du entscheiden.
bis bald
akari
-
ok, aber stimmt der restliche Pfad oder ist der falsch?
bzw. wie lautet er bei HKEY_LOCAL_MACHINE?
-
Hallo
ja er ist richtig.
Bei LOCAL_MACHINE wird nur die Benutzer-ID weggelassen, der Rest bleibt.
Schaus dir einfach im RegEdit an.bis bald
akari
-
Tom7 schrieb:
... damit sichergestellt wird, dass es immer gestartet wird, falls der PC mal ausfallen sollte.
Dafür bietet es sich eher an, das Programm als Dienst einzurichten. Autostarts werden erst nach der Benutzeranmeldung ausgeführt.
-
klingt gut, heißt dass, das das Prog im Hintergrund schon läuft und sobald sich der User anmeldet läuft die Grafik usw. schon???
mfg
-
Hallo
ein Dienst selber hat keine Grafik.
Die Frage ob ein Dienst besser für deine Zwecke ist, läßt sich nur beantwortet wenn du den Zweck deines Programmes näher erklärst.
bis bald
akari
-
Ja, das Programm läuft dann bereits, wenn der Anmeldebildschirm zu sehen ist.
Normalerweise haben Dienste keine Benutzeroberfläche, aber bei den Eigenschaften des jeweiligen Dienstes kann man einstellen, das man die Oberfläche sieht. ("Datenaustausch zwischen Dienst und Desktop zulassen" nennt sich das Häkchen, das ist nur möglich, wenn der Dienst als 'lokales Systemkonto' ausgeführt wird.)
Sobald der Nutzer sich anmeldet, sieht er das Programm dann, noch bevor die ganzen Autostarts loslegen.
-
und was muss an meiner bestehend SW ändern, dass es als Dienst gestartet wird, bzw. dass es in die Liste der Dienste aufgenommen wird?
Hast du da viell ein Beispiel oder dgl.?
mfg
Tom
-
Hier habe ich die Holzhammermethode beschrieben, die eigentlich für Visual Basic Programme gedacht ist, weil die nicht als Dienst zu programmieren sind:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-133664Bei dieser Methode gibt es keine saubere Kommunikation zwischen Diensteverwaltung und Programm, beim Beenden des Dienstes wird dann z. B. einfach der Kill-Befehl an deine Anwendung geschickt.
Wenn du es ordentlich machen willst, programmierst du den Dienst selber.
-
wie sieht es da eigentlich mit Treibern usw. aus?
sind da die Treiber schon alle geladen oder werden die erst durch die Benutzeranmeldung geladen?
ich brauch nämlich die serielle und ein CAN-Gerät welches über nen Treiber angesprochen wird.
mfg
Tom
-
Das sollte eigentlich über die Abhängigkeit der Dienste lösbar sein. Wenn die benötigten Treiber nicht als Dienst laufen, kann man auch einen Dienst nehmen, der relativ spät gestartet wird und die Abhängigkeit darauf setzen. (EDIT: Wenn ich mich richtig erinnere, dann wurde dafür der Druckspooler empfohlen.) Das habe ich mal als Tipp gelesen, aber noch nicht ausprobiert.
-
wie geht es denn mit dem in den autostart ordner eintragen?
-
Hallo
du läßt einen Registry-Wert in HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run anlegen, vom Typ String, als Namen einen frei wählbaren Namen für dein Programm und als Wert den absoluten Pfad zu deinem Programm.
bis bald
akari
-
Ich meine in Alle programme->Autostart
also ohne Registry
-
Eine Verknüpfung zu dem Programm im Autostart-Ordner anlegen.
Einfacher ist aber:
String awpath=Application->ExeName; TRegistry& regkey=*new TRegistry(); regkey.RootKey=HKEY_LOCAL_MACHINE; bool keygood=regkey.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false); regkey.LazyWrite=false; if(keygood) { regkey.WriteString("Dein Programm",awpath); } regkey.CloseKey(); delete ®key;
-
naja ok wenns einfacher ist

wie kann man das programm dann wieder aus den autostart entfernen?