Der Thread ist zwar schon etwas älter aber ich habe mal etwas zusammen gebastelt was evtl. interessant sein könnte. Der Code soll nur als Anregung dienen. Ich konnte ihn noch nicht auf verschiedenen PCs testen. Unter Win98 uns alte Konsorten läuft er bestimmt nicht. Kommentare habe ich auch nicht verwendet aber ich denke der Code ist weitestgehend selbsterklärend.
Delphi-Quellcode:
var
i: integer;
Reg: TRegistry;
SerPortNum: integer;
EnumList: TStringList;
FriendlyName: String;
PortName: String;
begin
Reg := TRegistry.Create();
EnumList := TStringlist.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKeyReadOnly('\System\CurrentControlSet\Services\SerEnum\Enum') then
begin
SerPortNum := Reg.ReadInteger('Count');
Memo1.Lines.Add('Anzahl der Schnittstellen : '+inttostr(SerPortNum));
for i:=0 to SerPortNum-1 do
EnumList.Add(Reg.ReadString(inttostr(i)));
Reg.CloseKey;
for i:=0 to SerPortNum-1 do
begin
if Reg.OpenKeyReadOnly('\System\CurrentControlSet\Enum\'+EnumList.Strings[i]+'\Device Parameters') then
PortName := Reg.ReadString('PortName');
Reg.CloseKey;
if Reg.OpenKeyReadOnly('\System\CurrentControlSet\Enum\'+EnumList.Strings[i]) then
FriendlyName := Reg.ReadString('FriendlyName');
Reg.CloseKey;
Memo1.Lines.Add(PortName + ' : ' + FriendlyName);
end;
end;
finally
EnumList.Free;
Reg.Free;
end;
end;