Autor Beitrag
Experience1986
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Do 29.01.04 16:11 
hi,

ich will den Inhalt von HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run auselesen, also alle Windows Autostarts des aktuellen Benutzers, was brrauch ich dafür und was muss ich beachten?

´Hab bereits fleissig Gegoogelt und auch hier im Forum gesucht, aber ohne erfolg.
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Do 29.01.04 16:27 

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Do 29.01.04 16:32 
Wenn man die Werte noch nicht kennt:

TRegistry.GetValueNames(StringListe);

Die OH ist Dein Freund!

Gruß, teebee
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 29.01.04 16:39 
teebee hat folgendes geschrieben:
Die OH ist Dein Freund!

OH? Oma Hiltrud? :mrgreen:
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Do 29.01.04 16:54 
MathiasSimmack hat folgendes geschrieben:
teebee hat folgendes geschrieben:
Die OH ist Dein Freund!

OH? Oma Hiltrud? :mrgreen:

Nee, meine Oma heisst Hertha...:wink:
Experience1986 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Do 29.01.04 17:05 
thx, hab es.

Aber wie kann ich zum Teufel in ein ListView (3 Columns: 1=Checkbox; 2=Name; 3=Wert) einen eintrag adden (in name und Wert)????
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Do 29.01.04 17:27 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Var li: TListItem;
li := ListView1.Items.Add;
li.Caption := 'Erste Spalte';
li.Checked := True;
li.SubItems.Add('Untereintrag');


Gruß, teebee
Experience1986 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Do 29.01.04 17:32 
Klasse, funzt auch

Hatte schon ne sau kompliziert Lösung angesteuert, das geht einfach und scheneller *G**
Experience1986 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Do 29.01.04 18:04 
Muss nochmal nerven:

Ich hab nuna lees eigentlich wie ich es will, ich habe nun eine Abfrage der einträge in HKEY_LOCAL_MACHINE und in HKEY_CURRENT_USER, leider kommt von HKEY_CURRENT_USER kein Eintrag zurück (In meiner Registry ist aber auch dort einer, bin ich mir sicher)

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
procedure TFRM_Main.Button4Click(Sender: TObject);
var
  i: integer;
  reg, reg2: TRegistry;
  sl, s2: TStrings;
  li:TListItem;
begin
  reg := TRegistry.Create;
  reg2 := TRegistry.Create;

  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg2.RootKey := HKEY_CURRENT_USER;

  reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Run');
  reg2.OpenKeyReadOnly('Software\Microsoft\Windows\CurrentVersion\Run');

  sl := TStringList.Create;
  s2 := TStringList.Create;

  reg.GetValueNames(sl);

  // Alle User - Autostarts
  for i := 0 to sl.Count -1 do
  begin
    li := ListView1.Items.Add;
    li.Caption := '';
    li.Checked := True;
    li.SubItems.Add(sl.Strings[i]);
    li.SubItems.Add(reg.ReadString(sl.Strings[i]));
  end;

  // Aktuelle User - Autostarts
  for i := 0 to s2.Count -1 do
  begin
    li := ListView1.Items.Add;
    li.Caption := '';
    li.Checked := True;
    li.SubItems.Add(s2.Strings[i]);
    li.SubItems.Add(reg.ReadString(s2.Strings[i]));
  end;

  sl.Free;
  s2.Free;

  reg.CloseKey;
  reg2.CloseKey;

  reg.Free;
  reg2.Free;
end;


Was kann also falsch sein?
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Do 29.01.04 18:37 
Wie wär's mitreg2.GetValueNames(s2);Das hast Du vergessen.
In der zweiten for-Schleife solltest Du auch lieber reg2 auslesen..

Gruß, teebee
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 29.01.04 18:49 
Ich frag mich, was das
Zitat:
ausblenden Delphi-Quelltext
1:
2:
reg := TRegistry.Create;
reg2 := TRegistry.Create;

soll? Und ich sag´s ungern, aber
Zitat:
ausblenden Delphi-Quelltext
1:
reg.RootKey := HKEY_LOCAL_MACHINE;					

kann unter NT-Systemen Probleme verursachen, wenn der Benutzer nicht ausreichende Berechtigungen zum Zugriff auf diesen Schlüssel hat. Der Grund liegt im
ausblenden Delphi-Quelltext
1:
TRegistry.Create					

bei dem das Registry-Objekt standardmäßig mit vollen Zugriffsrechten erzeugt wird. Und diese Rechte haben unter NT/2000/XP meist nur Benutzer der Admin-Gruppe.

Entweder du nimmst also
ausblenden Delphi-Quelltext
1:
TRegistry.Create(KEY_READ);					

was im Fall des Auslesens ohnehin zu empfehlen ist, oder du klammerst beim Start mit eingeschränkten Benutzerrechten den HKLM-Schlüssel aus, falls der User den Autostart auch bearbeiten können soll. Nur der Admin bzw. User dieser Gruppe sollten neben dem persönlichen Autostart auch den maschinenbezogenen Autostart bearbeiten dürfen.
Experience1986 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Do 29.01.04 21:55 
Ok, das werd ich mir dann auf jeden fall noch angugen.
(Programmiere zur Zeit nur für mich, zur Übung.)

Nun wollt ich noch was wissen, was aber eher in den VCL Bereich geht, ich hoffe ihr antwortet mir hier trotzdem.

Wie kann ich bei einem TListView herausfinden, welcher "Eintrag" gerade aktiviert ist?

Ich habe bereits per OnSelectItem versuch die Variable "Item" (Wird von dem Ereignis erstellt) so einzusetzen, damit ich zum Beispiel den "Checked" Status des aktuellen Items abfragen kann:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if (ListView1.Items[Items].checked) then
begin
...
end;



Aber das funktioniert nicht, da Item von Datentyp TListItem ist und ich ihn nicht so einfach abfragen kann, bin ich überhaupt auf dem richtigen weg?
Wenn ja, dann sagt mir bitte wie ich TListItem's abfragen kann.
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Do 29.01.04 22:25 
If ListView1.SelCount>0 Then If ListView1.Selected.Checked Then...Du solltest echt mal 'nen gründlichen Blick in die OH werfen. Nein, ich meine keine Oma sondern die Delphi-Hilfe....

Gruß, teebee
Experience1986 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Do 29.01.04 23:02 
THX, in de OH kann man ja manchmal innerhalb von Sekunden was finden, aber andererseits dauert es manchmal stunden....

Immerhin muss man ja wissen nach was man sucht, und dass ist nicht immer gewährleistet.
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Fr 30.01.04 09:13 
Experience1986 hat folgendes geschrieben:
Immerhin muss man ja wissen nach was man sucht, und dass ist nicht immer gewährleistet.

Naja, immerhin weisst Du, dass es um TListView geht. Unter Eigenschaften/Methoden findest Du, was Du brauchst. Du kannst auch alle Eigenschaften/Methoden (von TListView und seinen Unterklassen meine ich...) nacheinander durchgehen, und Dir die Beschreibungen zu Gemüte führen, da findet man so allerhand.

Nix für ungut, soll eine Anregung für die Zukunft sein, schließlich hättest Du eine Lösung so viel schneller gefunden als hier im Forum.

Gruß, teebee