![]() |
Re: Autostart Manager
Aha, na da kommen wir doch schon der Sache näher.
Also bei mir geht's so schnell, dass ich die Balken gar nicht zählen kann. Also bei 80% werden die Autostart-Einträge von allen Usern ausgelesen, also HKEY_USERS und von allen Schlüsseln, die da drin sind, die Autostart-Einträge. Wie viele Schlüssel habt ihr denn da? :gruebel: Wie viele User habt ihr denn bei euch eingerichtet? |
Re: Autostart Manager
Selbst bei 25 Benutzern sollte das kein Thema sein. Ich denke mal der fehler liegt in deinem Code.
|
Re: Autostart Manager
Ja, bin ich denn der eingigste bei dem es läuft :?: :?: :?: :?:
Hab es mit einem User und auf dem anderen Rechner mit 4 Usern getestet. Aber selbst bei 25 sollte es eigentlich gehen. Hier mal ein bissl Code-Fetzen:
Delphi-Quellcode:
List und Keys sind StringListen, ansonsten ist das Prinzip bei HKEY_CURRENT_USER und HKEY_CLASSES_ROOT dasselbe wie bei HKLM,
ProgressBar1.Position:=60;
Reg.RootKey:=HKEY_LOCAL_MACHINE; List.Clear; if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',False) then try Reg.GetValueNames(List); if List.Count>0 then for i:=0 to List.Count-1 do NewItem(List[i],Reg.ReadString(List[i]),'HKEY_LOCAL_MACHINE'); finally Reg.CloseKey; end; ProgressBar1.Position:=80; Reg.RootKey:=HKEY_USERS; List.Clear; if Reg.OpenKey('',False) then try Reg.GetKeyNames(Keys); Reg.CloseKey; while Keys.Count>0 do if Reg.OpenKey(Keys[0]+'\Software\Microsoft\Windows\CurrentVersion\Run',False) then begin Reg.GetValueNames(List); if List.Count>0 then for i:=0 to List.Count-1 do NewItem(List[i],Reg.ReadString(List[i]),'HKEY_USERS\'+Keys[0]); List.Clear; Keys.Delete(0); Reg.CloseKey; end; finally Reg.CloseKey; end; lediglich bei HKEY_USERS ist es anders, da ja noch die Unterschlüssel einzeln ausgelesen werden. Und NewItem ist eine Prozedur, die dann den neuen Eintrag zur ListView hinzufügt. Inkl. einer Funktion die das Icon zum Pfad sucht, die Funktion wird gerade noch verbessert. |
Re: Autostart Manager
Warum ist das:
Delphi-Quellcode:
keine for-Schleife? Du weißt doch, wie viele Eintrage in der Liste Keys sind.
while Keys.Count>0 do
if Reg.OpenKey(Keys[0]+'\Software\Microsoft\Windows\CurrentVersion\Run',False) then begin Reg.GetValueNames(List); if List.Count>0 then for i:=0 to List.Count-1 do NewItem(List[i],Reg.ReadString(List[i]),'HKEY_USERS\'+Keys[0]); List.Clear; Keys.Delete(0); Reg.CloseKey; end; Und wie erstellst du das TRegistry-Objekt? Ich würde es mal mit KEY_READ versuchen als Parameter der Create-Methode. |
Re: Autostart Manager
Zitat:
Bin halt ein Variablen-Sparer :zwinker: Zitat:
Delphi-Quellcode:
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???
procedure TForm1.FormCreate(Sender: TObject);
begin Reg:=TRegistry.Create; {...} end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(Reg); end; |
Re: Autostart Manager
Bei mir funktioniert das auslesen jetztr mit der debug-version.
|
Re: Autostart Manager
Zitat:
Wie lange dauert denn das Auslesen? Komisch ist: Wenn Du auf den Button klickst wird genau dasselbe gemacht, was vorher bei FormCreate gemacht wurde! Bis auf die ProgressBar hab ich sonst wirklich nix geändert... |
Re: Autostart Manager
Hmm... nur ne sekunde, mehr nicht, ich hab auch nur zwei,drei einträge.
Allerdings solltest du das nicht im formcreate machen, wenn dann im formshow! Im formcreate sind die ganzen komponenten, auf die du wahrscheinlich zugreifst, noch gar nicht da. EDIT: Es sollte dann eigentlcih AVs hageln... |
Re: Autostart Manager
Zitat:
|
Re: Autostart Manager
Zitat:
Dann muss ich jeden mal die Registry neu createn??? Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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 by Thomas Breitkreuz