Delphi-PRAXiS
Seite 2 von 8     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Autostart Manager (https://www.delphipraxis.net/71350-autostart-manager.html)

Martin K 14. Jun 2006 12:38

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?

Luckie 14. Jun 2006 12:45

Re: Autostart Manager
 
Selbst bei 25 Benutzern sollte das kein Thema sein. Ich denke mal der fehler liegt in deinem Code.

Martin K 14. Jun 2006 12:54

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:
    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;
List und Keys sind StringListen, ansonsten ist das Prinzip bei HKEY_CURRENT_USER und HKEY_CLASSES_ROOT dasselbe wie bei HKLM,
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.

Luckie 14. Jun 2006 12:59

Re: Autostart Manager
 
Warum ist das:
Delphi-Quellcode:
      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;
keine for-Schleife? Du weißt doch, wie viele Eintrage in der Liste Keys sind.

Und wie erstellst du das TRegistry-Objekt? Ich würde es mal mit KEY_READ versuchen als Parameter der Create-Methode.

Martin K 14. Jun 2006 13:05

Re: Autostart Manager
 
Zitat:

Zitat von Luckie
Warum ist das: [...] keine for-Schleife? Du weißt doch, wie viele Eintrage in der Liste Keys sind.

Ja, werde mal eine for-Schleife draus machen...
Bin halt ein Variablen-Sparer :zwinker:

Zitat:

Zitat von Luckie
Und wie erstellst du das TRegistry-Objekt? Ich würde es mal mit KEY_READ versuchen als Parameter der Create-Methode.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Reg:=TRegistry.Create;
 {...}
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(Reg);
end;
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???

DGL-luke 14. Jun 2006 13:09

Re: Autostart Manager
 
Bei mir funktioniert das auslesen jetztr mit der debug-version.

Martin K 14. Jun 2006 13:12

Re: Autostart Manager
 
Zitat:

Zitat von DGL-luke
Bei mir funktioniert das auslesen jetztr mit der debug-version.

Endlich mal einer, bei dem es klappt :bounce1:
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...

DGL-luke 14. Jun 2006 13:19

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...

Luckie 14. Jun 2006 13:36

Re: Autostart Manager
 
Zitat:

Zitat von Martin K
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???

Ja und? Willst du zu dem Zeitpunkt doch eh nicht, sondern nur anzeigen.

Martin K 14. Jun 2006 13:42

Re: Autostart Manager
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Martin K
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???

Ja und? Willst du zu dem Zeitpunkt doch eh nicht, sondern nur anzeigen.

Und wie kann ich dann zu einem späteren Zeitpunkt das KEY_READ ändern?
Dann muss ich jeden mal die Registry neu createn???

Zitat:

Zitat von DGL-luke
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...

Nö, bei mir hat's ja auch in FormCreate geklappt und AV's gab's definitiv keine!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.
Seite 2 von 8     12 34     Letzte »    

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