Witam.
procedure TForm1.Button1Click(Sender: TObject);
var
reg : TRegistry;
NazwyKluczy : TStringList;
NazwyPodKluczy : TStringList;
i, j : Integer;
count, count1 : Integer;
begin
reg:=TRegistry.Create;
NazwyKluczy := TStringList.Create;
NazwyPodKluczy := TStringList.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Enum\USB');
reg.GetKeyNames(NazwyKluczy);
count:=NazwyKluczy.Count;
//reg.Free;
//Memo1.Lines.AddStrings(NazwyKluczy);
for i:=0 to count-1 do
begin
Memo1.Lines.Add(NazwyKluczy[i]);
reg.OpenKeyReadOnly(NazwyKluczy[i]);
reg.GetKeyNames(NazwyPodKluczy);
count1:=NazwyPodKluczy.Count;
for j:=0 to count1-1 do
begin
Memo1.Lines.Add(NazwyPodKluczy[j]);
// ODCZYT WARTOŚCI KLUCZY ZAWARTYCH W PODKLUCZU NazwyPodKluczy[i]
end;
end;
reg.Free;
end;
end.
Piszę program do odczytywania informacji o urządzeniach USB podłączonych do komputera, do odczytu wartości chciałem użyć funkcji
reg.ReadString('nazwa_klucza');
, zwraca mi ona puste wartości.
Mam na myśli te klucze.
EDYCJA:
Już znalazłem problem, funkcja
reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Enum\USB\' + NazwyKluczy[i]);
nie zmienia ścieżki na te foldery z pętli tylko pozostaje ciągle na SYSTEM\CurrentControlSet\Enum\USB\
może ktoś wie dlaczego??
Z funkcją ReadString
jest wszystko w porządku jak ustawię klucz z ręki.
OK, doszedłem do tego. Po otwarciu klucza i wykonaniu na nim operacji trzeba go zamknąć funkcją CloseKey
;
EDYCJA2:
Wiecie może jak sprawdzić status urządzenia, podłączone czy odłączone?