![]() |
Autostart unter Windows 7
Ich hatte für mein Prog. den Autostart in der Registry ...Run eingetragen.
Leider lässt mich mein Win7 64 nicht mehr in die Registry schreiben. Das Problem scheint laut Google win7 typisch zu sein. Wie kann ich also jetzt eine Autostartfunktion implementieren, die auch in Win7 (ich glaube es klappte nur nicht in der 64bit version) läuft? danke |
AW: Autostart unter Windows 7
Du brauchst dort (wie auch unter XP) natürlich Adminrechte. Zudem musst du auf den 64-Bit-Schlüssel zugreifen:
![]() |
AW: Autostart unter Windows 7
Starte mal dein Programm als "Als Administrator ausführen". Schreibzugriff unter HKLM geht nur mal nur mit lokalen Adminrechten. Dein Programm wird also auch unter NT/2000/.. versagen wenn der USer nicht mindestens in der Gruppe "Hauptbenutzer" ist.
|
AW: Autostart unter Windows 7
Zitat:
Die zweite Variante ist Registry undter "Software\Microsoft\Windows\CurrentVersion\Run ". Auch hier gibt es zwei Möglichkeiten, den Autostart für Alle und den fürs eigenes Konto. Der erste ist unter HKEY_LOCAL_MACHINE, auf den hat wohl nur der Admin Zugriff, und unter HKEY_CURRENT_USER, hier hast du Schriebrechte (zumindest bei XP). Also eines davon sollte klappen. |
AW: Autostart unter Windows 7
Zitat:
Für Userstarts aka hkcu solltest du es machen können. |
AW: Autostart unter Windows 7
Zitat:
|
AW: Autostart unter Windows 7
Bei WIN 7 verwendet man den Taskplaner.
|
AW: Autostart unter Windows 7
sorry, das ich jetzt erst antworte.
Unter Win7 lief meine Standard autostart funktion über die Registry. 2 Meiner Rechner haben aber die 64 Bit version. Die scheint hier anders zu ticken. Das Thema Registry habe ich im Grunde schon aufgegeben. WOW32 etc. klappt unter win7 aber nicht mit der 64 bit version. Im Moment versuche ich den Autostart folder zu befüllen. Aber irgendwie schreibt meine Routine keinen Shortcut. Aber hier bin ich noch nicht 100prozent sicher. Übers Wochenende weiss ich mehr. |
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang liegt ein kleines Testprogramm. Dieses beinhaltet nur die bereits im Thread genannte Funktionalität.
Das funktioniert bei mir unter Windows XP, 7 und 8 (7 und 8 mit 64 Bit getestet), sowohl als 32-Bit Programm als auch als 64-Bit Programm (beide Versionen liegen zusätzlich zum Quelltext bei). Das Projekt ist für Delphi XE2. |
AW: Autostart unter Windows 7
zuerst mal vielen Dank für dein Test Program.
Bin gerade dabei es zu starten. Mit meinen eigenen Versuchen ist es wie verhext. Code der vorher lief, klappt einfach nicht. Selbst Versuch in den richtigen Autostart Folder einen Shortcut zu legen, schlug fehl. Es wird einfach kein shortcut produziert. Beim Aufruf deines Programs meckert Delphi, das das Property Elevation nicht da ist. Ich ignoriere. Beim Compilen meldet er File not found: VCL Forms.dcu Anscheinend fehlt mir eine Komponente, um das Program ablaufen zu lassen. |
AW: Autostart unter Windows 7
Du hast dann offenbar eine ältere Delphiversion. Da du das weder im Thread noch im Profil angegeben hast, habe ich einfach mal wie schon geschrieben XE2 benutzt.
Bei älteren Delphiversionen musst du die Unitnamen korrigieren, da die Standardunits da noch keine Namespaces benutzt haben. VCL.Forms hieß vorher z.B. einfach nur Forms. Und Elevation bringt das Schildchen zum Symbolisieren der nötigen Adminrechte an. Das ging vorher nur manuell. Um welche Delphiversion geht es denn? |
AW: Autostart unter Windows 7
Hallo
Meine Delphi version ist 7. X2 jene ich noch gar nicht. Ich habe eine weile gar nicht programmiert, daher habe ich wohl einiges nicht mit bekommen |
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Gut, da geht natürlich noch gar nichts an aktuellen Features. Einiges wurde in Delphi 2006 eingeführt (nested types, Klassenvariablen, FindCmdLineSwitch Erweiterung), anderes in Delphi 2010 (Klassenkonstruktoren/-destruktoren). Im Anhang findest du eine Version, die für alle Versionen geht. Wenn man für so alte Versionen schreiben muss, würde man diese Features natürlich normalerweise einfach gar nicht erst nutzen. Gerade mit dem alten FindCmdLineSwitch bleibt aber eine gewisse Unsicherheit, da man sich auf die Reihenfolge der Parameter verlässt.
|
AW: Autostart unter Windows 7
Vielen Dank für das update.
Das Programm läuft jetzt und lässt sich auf meinem System compilieren. Leider klappt auch das nicht. Das Program meldet "nicht erfolgreich". Ich habe im Kommentar "Test" eingegeben, u. im Befehl C:\Windows\Notepad.exe Wenn ich dich richtig verstehe, funktioniert dein Program normalerweise unter Win7 64. Dann bleibt nur der Schluss, das an meinem System mittlerweile etwas verbogen wurde. Wenn das so ist, nehme ich deinen Code, u. stelle den Autostart an meinem Rechner manuell ein. |
AW: Autostart unter Windows 7
Stell am besten einmal ein, dass es für den aktuellen Benutzer sein soll. Dann brauchst du keine Adminabfrage und kannst im Code debuggen was passiert.
Du kannst auch ein Log mit dem Process Monitor erstellen und gefiltert auf diese Exe hier posten. ;-) |
AW: Autostart unter Windows 7
Gut
ok, auf der Form Steht beim Start: Autostart nicht gefunden. Der Code läuft bis: class function TAutostart.InternalModifyEntryDirect(const ADescription, ACommand: string; const ALocation: TEntryLocation; AOperation: TEntryOperation): Boolean; var Reg: TRegistry; begin Result := False; Reg := TRegistry.Create(KEY_ALL_ACCESS or KEY_WOW64_64KEY); try Reg.RootKey := cRegRoot[ALocation]; if Reg.OpenKey('Software\Microsoft\Windows\CurrentVer sion\' + cRegLocation[ALocation], AOperation = eopCreate) then // hier steigt delphi aus //die Abfrage gibt wohl false zurück und.. begin if AOperation = eopCreate then Reg.WriteString(ADescription, ACommand) else if Reg.ValueExists(ADescription) then Reg.DeleteValue(ADescription); Result := True; Reg.CloseKey; end; //hier geht es weiter finally Reg.Free; end Einen Log mit dem Process Monitor...gibt es diesen schon mit Delphi 7? Ich kenne den PM noch nicht. |
AW: Autostart unter Windows 7
|
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
OK, die Darstellung der Prozesse in dem Process Monitor übersteigt meinen Horizont.
Ich habe mal versucht aufzufangen, was passiert, wenn ich "Erzeugen" in dem Program Autostart Test von Janicke klicke. Die Log file hängt dran. Ich habe a) Autostart Test gestartet b) Einträge befüllte c) Process Monitor gestartet, Fenster gewischt d) Capture Events ge-klickt e) Erzeugen in Autostart Test geklickt f) Capture Events wieder ausgeklickt. Ich hoffe das war so richtig |
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich war das schon richtig, aber in dem Log ist fast nix drin. Und von dem Projekt finde ich gar nix.
Ich habe einmal den Filter und das Highlighting eingestellt wie im Screenshot zu sehen. Wichtig sind jeweils die include Zeilen. Markiert im Log siehst du dort die Zeile, in der man sieht, dass in den Eintrag Test der Wert cmd.exe geschrieben wird. Das habe ich für den aktuellen Benutzer gemacht. Wenn du den Filter so einstellst, solltest du auch Einträge von deinem Projekt im Log sehen. Sonst stimmt etwas nicht. Bei Speichern kannst du dann "Events displayed using current filter" aktivieren, damit die herausgefilterten Einträge gar nicht gespeichert werden. Anhang 36531 |
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Ich prüfe das morgen mal mit dem Filter.
Also das ganze ist für mich schon sehr anspruchsvoll. Bin mal gespannt was du rausfindest. Ich habe jetzt ein zweites Logfile erstellt, das von Start compiling bis programmstop eigentlich alles aufgezeichnet hat. Morgen schau ich mal ob ich mit den Filtern was erkennen kann. vg jodahush |
AW: Autostart unter Windows 7
Leider ist da nichts von dem Programm geloggt, nur der Start durch Delphi. Die Filter müssen irgendwie falsch sein.
Klick bitte einmal bei den Filtern auf Reset und gib nur die Filter ein, die in meinem Screenshot zu sehen sind (die beiden oberen sind die wichtigen, die restlichen Standard beim Process Monitor). Dann sollten da einige Einträge erscheinen, und zwar nur solche, bei denen die Exe auch vorne in der Spalte steht. Du kannst aber auch einmal nach dem Schlüssel Run in der Registry schauen und prüfen welche Zugriffsrechte der hat. Wenn dein Benutzer da keine Zugriffsrechte hat, wäre der Fehler klar. Ansonsten könnte ich heute Abend (ab ca. 20 Uhr) auch kurz über TeamViewer draufschauen, wenn du möchtest. |
AW: Autostart unter Windows 7
Danke, ich geh mal einzeln auf die Punkte ein.
- Den Prozess Viewer probiere ich gerade an meinem Arbeitsrechner aus. Ich werden mit entsprechenden Filtern heute abend zuhause mal aufzeichnen. - Das mit den Rechten ist eine gute Idee. Bin garnicht auf die Idee gekommen, das meine Rechte im Run ordner auch für Admin verstellt sein könnten. - Team Viewer, auch ne gute idee. Den TV wollte ich eh mal ausprobieren u. werde ihn heute abend mal installieren. gruss jodahush |
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Ich denke nun habe ich ein vernünftiges Log file.
Die Filter entsprechend gesetzt sehe ich die Prozesse, den Fehler aber erkenne ich nicht. Ich habe für beide Run Schlüssel als Admin Vollzugriff, als User Lesend. HIeran lag es also nicht. Schau mal ob du was mit dem Logfile anfangen kannst. Ansonsten können wir den Teamviewer probieren. gruss jodahush |
AW: Autostart unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich weiß nicht was mit deinen Rechten los ist. Und eigentlich starte ich im Beispielprogramm ja das eigene Programm nochmal mit Adminrechten, wenn ich keine habe. Auf einem normal konfigurierten System klappt das eigentlich. |
AW: Autostart unter Windows 7
OK, vielen Dank. Dann ist wohl irgend etwas auf meinem System verbogen, aber wenigstens funktioniert mein Program.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 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