1.通过注册表
function GetSerialPorts: TStringList; var Reg: TRegistry; KeyList: TStringList; i: Integer; begin Result := TStringList.Create; Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly('HARDWARE\DEVICEMAP\SERIALCOMM') then begin KeyList := TStringList.Create; try Reg.GetValueNames(KeyList); for i := 0 to KeyList.Count - 1 do Result.Add(Reg.ReadString(KeyList[i])); finally KeyList.Free; end; Reg.CloseKey; end; finally Reg.Free; end; end;