Einzelnen Beitrag anzeigen

OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Probleme, serielle Ports zu ermitteln

  Alt 3. Aug 2015, 11:11
Hallo Freunde,

heute nal wieder eine Merkwürdigkeit. Habe eine Software geschrieben, die sich mit Endgeräten über die serielle Schnittstelle unterhalten muß. Natürlich muß ich in der Konfiguration die Liste der verfügbaren COM-Ports anbieten und wie üblich gibt es da Probleme mit den USB-Seriell-Wandlern und deren virtuellen COM-Ports.

Denn diese werden über die Registry-Methode nicht gefunden Also habe ich hier etwas geforscht und eine Methode gefunden, die übers WMI geht:

Delphi-Quellcode:
procedure GetWin32_SerialPortInfo(TargetCombo: TComboBox);
const
     WbemUser ='';
     WbemPassword ='';
     WbemComputer ='localhost';
     wbemFlagForwardOnly = $00000020;
var
   FSWbemLocator : OLEVariant;
   FWMIService : OLEVariant;
   FWbemObjectSet: OLEVariant;
   FWbemObject : OLEVariant;
   oEnum : IEnumvariant;
   iValue : LongWord;
begin
     TargetCombo.Clear;
     FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
     FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\WMI', WbemUser, WbemPassword);
     FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM MSSerial_PortName','WQL',wbemFlagForwardOnly);
     oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
     while oEnum.Next(1, FWbemObject, iValue) = 0 do
     begin
          TargetCombo.Items.Add(String(FWbemObject.PortName));
          FWbemObject:=Unassigned;
     end;
end;
Funktioniert tadellos mit Win7, Win8, Win10 - solange man Administratorrechte hat. Nun habe ich hier einen Rechner, bei dem funktioniert dies auf Teufel komm raus nicht. MadExcept wirft einen Fehlerreport heraus mit der Meldung: Nicht unterstützt. Fehlerzeile ist das ExecQuery.

Das Betriebssystem ist Windows 10, Build 10074 und ja, er hat Admin-Rechte

Mir schwant, das ich irgendwas nachinstallieren muß auf dem Rechner - nur was ? Irgendwer ne heiße Idee, was da schief ist ?

Danke für jeden Tip !
  Mit Zitat antworten Zitat