- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
Пишу менеджер автозапусков:
type
tregkey = class
rootkey: hkey;
keyname: string;
param: string;
value: string;
function Rootkeyname:string;
end;
procedure TForm1.UpdateAutoruns;
var
i: integer;
lst: tlistitem;
rlist: tobjectlist;
keyname: string;
tregobj:tregkey;
begin
rlist := tobjectlist.create;
ListView4.items.clear;
try
regread(windows.HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run',rlist);
regread(windows.HKEY_CURRENT_USER,
'Software\Microsoft\Windows\CurrentVersion\RunOnce', rlist);
regread(windows.HKEY_CURRENT_USER,
'Software\Microsoft\Windows\CurrentVersion\RunServices', rlist);
regread(windows.HKEY_CURRENT_USER,
'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run', rlist);
regread(windows.HKEY_CURRENT_USER,
'HKEY_CURRENT_USER\Software\Microsoft\ Windows NT\CurrentVersion\Windows', rlist);
regread(windows.HKEY_LOCAL_MACHINE,
'Software\Microsoft\Windows\CurrentVersion\Run', rlist);
regread(windows.HKEY_LOCAL_MACHINE,
'Software\Microsoft\Windows\CurrentVersion\RunOnce', rlist);
regread(windows.HKEY_LOCAL_MACHINE,
'Software\Microsoft\Windows\CurrentVersion\RunServices', rlist);
regread(windows.HKEY_LOCAL_MACHINE,
'Software\Microsoft\Windows\CurrentVersion\RunServicesOnce', rlist);
regread(windows.HKEY_LOCAL_MACHINE,
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\RunOnceEx', rlist);
for i := rlist.Count - 1 downto 0 do
begin
tregobj:=tregkey(rlist[i]);
lst := ListView4.items.Add;
keyname := format('%s\%s\%s', [tregobj.Rootkeyname,tregobj.keyname, tregobj.param]);
lst.Caption :=keyname;
lst.SubItems.AddObject(tregobj.value,tregobj);
end;
finally
rlist.Free;
end;
end;
В итоге этот код
procedure TForm1.sBitBtn20Click(Sender: TObject);
var
i:integer;
reg:tregistry;
begin
for i:= listview4.Items.Count -1 downto 0 do
showmessage(tregkey(listview4.Items[i].subitems.Objects[0]).rootkeyname);
end;
либо вызывает ошибку доступа либо пустой messagebox.
В чем лажа? Я тупо не вижу ошибки.