So geht es bei mir unter Vista 32 (kein Admin-Account):
Delphi-Quellcode:
procedure ListComPorts(ResultList: TStrings);
var
reg: TRegistry;
i: integer;
TempResult: TStringlist;
begin
TempResult := TStringlist.Create;
try
reg := TRegistry.Create(KEY_READ);
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey('hardware\devicemap\serialcomm', False) then
begin
reg.GetValueNames(TempResult);
for i := 0 to TempResult.Count - 1 do
ResultList.Add(reg.Readstring(TempResult.strings[i]));
reg.CloseKey;
end;
finally
reg.Free;
end;
finally
TempResult.Free;
end;
end;
[edit] BTW: Interessanter Artikel dazu:
http://www.codeproject.com/KB/system...enum_fifo.aspx, aber ganz ohne die Registry kommt man wohl auch dort nicht aus, sofern meine bescheidenen C++-Kenntnisse ausreichen. [/edit]