Index




COM Port Manager - ComPortMan V0.9.6

Einstieg

Installation

Konfiguration

Probleme

History

Lizenzvereinbarung




Homepage:
http://www.uwe-sieber.de/comportmane.html


EMail:
mail@uwe-sieber.de







Einstieg



ComPortMan ist ein Window-Dienst, der Kontrolle über die Vergabe von COM-Port-Namen (z.B. COM3, COM4 usw.) verschafft.
Als Windows-Dienst ist ComPortMan, einmal installiert, unabhängig von den Rechten des angemeldeten Nutzers.

Es können neue Standard-COM-Ports für beliebige Arten von COM-Ports festgelegt werden, z.B. für USB-Seriell-Adapter.

ComPortMan läuft unter Windows 2000, XP, Server 2003, Vista, Windows 7, 8, 10 und den jeweiligen Server-Versionen.

Unter folgenden Systemen wurde hauptsächlich getestet:
  • Windows XP SP3
  • Windows 7
  • Windows 7 x64
  • Windows 10


    Installation

    ComPortMan kommt nicht in einer SETUP.EXE, die Installation erfolgt manuell, siehe hier: Installation.


    Konditionen

    ComPortMan ist Freeware für die private Nutzung sowie für Bildungseinrichtungen. Anderenfalls ist - nach einer 30-tägigen Testzeit - pro Computer eine Lizenz nötig, s.unten.
    Bildungseinrichtungen gelten als solche, wenn Zahl der eingeschriebenen Schüler und Studenten höher ist als die der sonstigen Mitarbeiter.

    Preise gibts hier:
    http://www.uwe-sieber.de/ComPortMan.html

    Lizenz-Vereinbarung

    Die Software ist auch ohne Lizenz voll funktionsfähig - es gibt keine "Vollversion".





    Wozu?

    Beim erstmaligen Anschließen eines Gerätes, dass sich als COM-Port zu erkennen gibt, ordnet Windows den ersten, in der gesamten Lebensdauer der Windowsinstallation noch niemals benutzten COM-Port zu. Den Port kann man dann im Geräte-Manager mit einiger Klickerei umstellen.
    Für jeden neuen COM-Port geht das Ganze von vorne los, ebenso wenn man ein Gerät, keine USB-Hardware-Seriennummer hat, an einen anderen USB-Port anschließt - ohne Seriennummer wird es dort nicht als das Selbe wiedererkannt.

    Wird ein COM-Port entfernt, bleibt dessen Port-Nummer reserviert.

    Die Reservierung zuvor genutzter COM-Ports ist in Registry unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter gespeichert. Zur manuellen aufheben der Reservierung habe ich ein kleines Tool geschrieben:
    http://www.uwe-sieber.de/misc_tools.html#com_ports


    Mit ComPortMan kann man Abhängig von Kriterien vordefinieren, anhand verschiedener Kriterien  welche Geräte welche Portnummern bekommen.

    Zum Ändern von COM-Ports gibt es kein API, ComPortMan muß direkt auf die Windows Registry zurgreifen. Da sich ComPortMan über die Reservierungen hinwegsetzt passiert unter Umständen genau das was die Reservierungen verhindern sollen, nämlich dass ein COM-Port beim erneuten Anschließen eine Gerätes bereits belegt ist und das Gerät deshalb nicht starten kann. Da es dann auch keine Benachrichtigung über die Ankunft des Geräte gibt, kann dann auch ComPortMan nicht mehr retten.

    Das Einsatzscenario beschränkt sich somit auf einfache Fälle, wie das Anschließen eines einzelnen USB-Seriell-Adapters an verschiedene USB-Ports, wo er trotz fehlender USB-Seriennummer immer den selben Port bekommt.

    Immer hilfreich und problemlos sind natürlich auch die Balloontip mit den zugeordneten COM-Ports neue angeschlossener Geräte.




     











    Installation



    Einfach die ZIP-Datei entpacken, z.B. nach C:\Programme - ein Ordner ComPortMan ist enthalten. Im Ergebnis sollten die Dateien dann z.B. in C:\Programme\ComPortMan liegen.

    Unter Vista und Windows 7 besser in einen Order wie C:\Tools installieren, da unter C:\Programme die ComPortMan.INI kommentarlos in den "Virtal Store" umgeleitet wird, falls sie ein eingeschränkter Nutzer bearbeitet. Falls ein Ordner wie C:\Tools benutzt wird, bitte sicherstellen, dass - genau wie bei C:\Programme - nur Administratoren und "SYSTEM" Schreib- und Ändern-Zugriff haben, sonst könnte böswillige Software die ComPortMan.EXE ersetzen oder die ComPortMan.INI modifizieren, um an höhere Rechte zu gelangen.

    ComPortMan muß auf einem lokalen Laufwerk installiert sein, er funktioniert nicht, wenn er von einem Netz- oder Subst-Laufwerk gestartet wird.

    Dann in die ComPortMan.INI die gewünschten COM-Ports eintragen. Es ist ein Beispiel-INI enthalten - die ComPortMan_sample.INI. Entweder eine neue ComPortMan.INI anlegen oder die ComPortMan_sample.INI in ComPortMan.INI umbenennen und bearbeiten.

    Zum Installieren des ComPortMan-Dienstes einfach die ComPortMan.EXE mit dem Paramter -install starten.
    Genau das macht die _install.cmd

    Damit werden keinerlei Dateien kopiert. ComPortMan wird nur als Dienst registriert und gestartet.

    Ohne Admin-Rechte startet sich die ComPortMan.EXE selbst nochmal und fordert dabei die nötigen Admin-Rechten an.

    ComPortMan trägt sich mit der Startart 'Automatisch' ein - wird also bei jedem Systemstart automatisch geladen.


    Deinstallation:
    Der Dienst kann mit dem Parameter -uninstall gestoppt und deinstalliert werden - das macht die 

    _uninstall.cmd

    Der Unterstrich am Beginn des Dateinames dient allein dazu, die Command-Script-Dateien bei alphabetischer Sortierung am Anfang zu haben...

    Beides geht auch ohne MessageBox:

    ComPortMan -silentinstall
    ComPortMan -silentuninstall

    Es gibt dann bei Erfolg Errorlevel 0, sonst 1 zurück.

    Der installierte Dienst kann mit _stop.cmd und _start.cmd gestoppt und gestartet werden.

    Auf der Kommandozeile kann man auch das Windows-Kommando NET bemühen:

    net stop ComPortMan
    net start ComPortMan

    Hinweis: Wenn der ComPortMan-Dienst gestartet wird, wird die ComPortMan.EXE aus dem Pfad genommen, aus dem der Dienst installiert wurde! Von wo aus der Dienst gestartet wird, spielt keine Rolle, soll ein neues Verzeichnis benutzt werden, dort einmal  _uninstall und dann _install ausführen.


    Die Einstellungen in der ComPortMan.INI können geändert werden, ohne den Dienst neu zu starten - die INI wird bei jedem Anschließen eines COM-Ports gelesen, wenn sich ihr Datei-Datum/Uhrzeit geändert hat.

    Mehr dazu unter Konfiguration.


    Hinweis:

    Die CMD-Dateien enthalten nur einfache Kommandozeilen wie
    ComPortMan -install
    Deshalb müssen sie vom ComPortMan-Ordner aus gestartet werden, sonst wird die ComPortMan.EXE nicht gefunden. Soll die CMD von einem anderen Ordner aus gestartet werden, kann man die CMD-Dateien so anpassen:
    "%~dp0ComPortMan" -install

    %~dp0 ist ein Platzhalter für Laufwerk und Pfad zur CMD-Datei. Das funktioniert so: %0 ist der Platzhalter für die laufende CMD-Datei, z.B. C:\Program Files\ComPortMan\_install.cmd.
    ~dp ist ein "Modifizierer" und liefert Laufwerk plus Pfad (drive + path), z.B. C:\Program Files\ComPortMan\.

    Mehr über Batch-Parameter und Modifizierer:
    http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx






    Konfiguration



    ComPortMan wird über eine INI-Datei namens ComPortMan.INI konfiguriert die im selben Verzeichnis wie die ComPortMan.EXE liegt. Der Windows-Explorer zeigt ja standardmäßig keine Dateierweiterungen wie "INI" an - INI-Dateien nennt er "Konfigurationseinstellungen".
    Eine INI-Datei kann z.B. mit dem Windows-Editor 'Notepad' bearbeitet werden - einfach im Explorer doppelklicken.
    Mitgeliefert wird als Beispiel die ComPortMan_Sample.INI - die kann man sich umbenennen oder eine neue ComPortMan.INI anlegen.

    Das Editieren der ComPortMan.INI erfordert Admin-Rechte, da sie im Programme-Verzeichnis liegt - da haben auf NTFS-formatierten Laufwerken nur Admins Schreibzugriff.
    Unter Vista kann hier der "Virtual Store" zuschlagen: Das Schreiben der INI-Datei wird dann nach 
    C:\Users\(UserName)\AppData\Local\VirtualStore\Program Files\ComPortMan
    umgelenkt. Der ComPortMan-Dienst liest aber aus seinem Verzeichnis. Also unter Vista die USDBLM.INI immer als "echter" Administrator bearbeiten. Oder ComPortMan nicht unter C:\Programme installieren, sondern irgendwo anders, z.B. C:\Tools\ComPortMan - der Vista Virtual Store ist nur für C:\Programme wirksam.


    Wie INI-Dateien funktionieren

    INI-Dateien sind in Abschnitte unterteilt - jeder Abschnitt beginnt mit dem Abschnitts-Namen in eckigen Klammern, z.B. [ComPorts] und erstreckt sich bis zum Beginn des nächsten Abschnitts bzw. beim letzen Abschnitt bis zum Datei-Ende. Jeden Abschnitt darf es nur einmal geben! Die Konfigurations-Einstellungen stehen unter den jeweiligen Abschnitts-Namen - ihre Bedeutung ist abhängig vom Abschnitt in dem sie stehen. Innerhalb eines Abschnitts darf es jeden Wert nur einmal geben.
    Kommentarzeilen beginnen mit einem Semikolon. Kommentare sind nur am Zeilenanfang zulässig.

    Niemals Abschnitts-Zeilen so auskommentieren:

    ;[ComPorts20]

    Die Einstellungen aus diesem Abschitt gehören dann zum vorherigen!
    So legt man einen Abschnitt z.B. korrekt lahm:

    [-----ComPorts10]

    Es ist nach wie vor ein Abschnitt, aber keiner für den sich jemand interessiert.


    Alternativ Regsitry

    ComPortMan kann seine Einstellungen alternativ aus der Registry lesen, und zwar unter
    HKLM/Software/Uwe Sieber/ComPortMan
    Wenn dieser Schlüssel vorhanden ist, wird die ComPortMan.INI ignoriert! Nur die Einstellungen für die Log-Datei kommen immer aus der ComPortMan.INI.
    Für jeden INI-Abschnitt ist ein Schlüssel anzulegen, die Werte müssen vom Typ REG_SZ sein. Damit ComPortMan Änderungen im laufenden Betrieb bemerkt, kann der Wert (Standard) unter HKLM/Software/Uwe Sieber/ComPortMan auf einen anderen (beliebigen) Wert gesetzt werden.. ComPortMan liest dann die Konfiguration neu ein.
    Hier gibt's eine Beispiel REG-Datei (natürlich erst speichern und bearbeiten, nicht gleich ausführen...): http://www.uwe-sieber.de/files/ComPortMan_beispiel.reg

    Unter x64 Windows wird die Win32-Version von ComPortMan umgeleitet nach
    HKLM/Software/Wow6432Node/Uwe Sieber/ComPortMan, also besser die x64-Version einsetzen.


    Einige Beispiele

    Ohne Konfiguration ändert ComPortMan keine COM-Ports.

    Für jeden COM-Port-Typ der eine eigene Behandlung erfahren soll brauch man einen Abschnitt [ComPortsXX]. XX steht für eine Nummer von 1 bis 99 oder keine Nummer - in dieser Reihenfolge werden die Abschnitte ausgewertet.
    Welcher Abschnitt für einen COM-Port zuständig ist, wird über Kriterien gesteuert. Jeder Abschnitt braucht mindestens ein Kriterium.

    Das Tool ComPortInfo zeigt einige Daten über die aktuell vorhanden COM-Ports und diese Daten können für ComPortMan als Kriterien genutzt werden.

    Beispiel für ComPortInfo' Ausgaben:

    PortName      : COM2
    KernelName    : \Device\Serial0
    DeviceID      : ACPI\PNP0501\1
    FriendlyName  : Kommunikationsanschluss (COM2)
    IRQ           : 7
    IoPort        : 3F8

    PortName      : COM7
    KernelName    : \Device\sscdmdm0
    DeviceID      : USB\VID_04E8&PID_6601&MI_00\9&34C622D7&0&4_00
    FriendlyName  : SAMSUNG Mobile Modem #2

    Wenn man COM2 zurück auf COM1 haben will, nutzt man am besten die nur bei internen Ports vorhandenen Kriterien IRQ und IoPort:
    Grün die Kriterien, violet der Ziel-Port:

    [ComPorts10]
    IRQ=7
    IoPort=3F8
    PortName=COM1

    Um COM7 aus obigem Beispiel auf COM3 zu verschieben:

    [ComPorts20]
    KernelName=\Device\sscdmdm0
    PortName=COM3

    Die Nummern der Abschnitt stehen in keiner Beziehung zu irgendwas. ComPortMan liest [ComPorts1] bis [ComPorts99] und zuletzt [ComPorts] und überprüft die dort festgelegten Kriterien. Der erste Abschnitt mit passenden Daten wird benutzt.

    Wenn ein Port nicht verändert werden soll, legt man einfach einen dafür passenden Abschnitt mit niedriger Nummer an und legt dort keinen Ziel-Port fest. Der Abschnitt ist dann trotzdem zuständig, mangels Ziel-Port wird aber nichts verändert.

    Nachdem die INI angepaßt wurde, kann man F5 zum Aktualisieren drücken - es sollte dann für den jeweiligen Port den zuständigen Abschnitt zeigen:

    PortName      : COM2
    KernelName    : \Device\Serial0
    DeviceID      : ACPI\PNP0501\1
    FriendlyName  : Kommunikationsanschluss (COM2)
    IRQ           : 7
    IoPort        : 3F8
    Section       : [ComPorts10]

    PortName      : COM7
    KernelName    : \Device\sscdmdm0
    DeviceID      : USB\VID_04E8&PID_6601&MI_00\9&34C622D7&0&4_00
    FriendlyName  : SAMSUNG Mobile Modem #2
    Section       : [ComPorts20]


    ComPortMan überpüft die Ports beim Start und wenn ein neuer Port im System erscheint. 
    Um also die Einstellungen für einen externen Anschluß wirksam zu machen, schließt man ihn neu an. Für interne Ports kann man die ComPortMan-Dienst neu starten.




    Einstellungen



    Die im Folgenden beschriebenen Einstellungen sind in der ComPortMan.INI im Abschnitt [Settings] einzutragen.
    In den Beispielen wird immer wieder aufs Neue der Abschnitt [Settings] genannt. Damit ist natürlich der eine gemeinsame Abschnitt gemeint. Es kann nur einen geben...

    Die Einstellungen werden sofort wirksam.


    COM-Ports beim Start überprüfen

    Standardmäßig überprüft ComPortMan die Ports beim Start. Wenn es das nicht tun soll:

    [Settings]
    CheckPortsOnStartup=0


    COM-Ports beim Aufwachen aus Standby und Ruhezustand überprüfen

    Falls sich die COM-Ports nach dem Aufwachen aus Standby und Ruhezustand verändern, kann ComPortMan das korrigieren. Normalerweise ist das aber nicht nötig.

    [Settings]
    CheckPortsOnResume=1


    DosDeviceName von COM-Ports nach dem Entfernen löschen

    Manche Treiber vergessen, den DosDeviceName (sowas wie COM1, COM2 usw) nach Entfernen des Gerätes zu löschen. Normalerweise macht das nichts, da ja ohne ComPortMan nur genau dieses Gerät diesen Port bekommt. Wenn ComPortMan das Löschen übernehmen soll:

    [Settings]
    RemoveDosDeviceNameOnRemoval=1

    Standardmäßig löscht ComPortMan den Portnamen nur, wenn er ihn selbst im Quick-and-dirty-Modus zugeordnet hat.


    Quick-and-dirty-Modus

    Bis V0.7 hat ComPortMan Portnummern geändert, indem er die entprechenden Registry-Einträge des jeweiligen Ports ändert und dann das Gerät neu startet. Dieser Neustart kann aber einige Sekunden dauern. Bei Mehrfachports startet ComPortMan das übergeordnete Gerät neu da das etwas schneller geht. Bei USB-Multi-Seriell-Adaptern ist das z.B. dessen eingebauter USB-Hub.
    Das ist die saubere aber oft langsame Methode.

    Im Quick-and-dirty-Modus werden auch die Registry-Einträge geändert, dann aber direkt der alte COM-Port-Name gelöscht und der neue angelegt.
    Beim Entfernen des Ports muß dann ComPortMan den neuen COM-Port-Namen löschen, denn der Treiber wird warscheinlich den ursprünglichen löschen wollen. Wenn der nicht da ist, macht das nichts, ist der Port aber inzwischen durch ein anderes Gerät belegt, könnte dessen Port gelöscht werden. Ob sowas passiert, hängt vom Treiber des Ports ab. Ab Version 0.95 erkennt ComPortMan dies und stellt den gelöschten Port sofort wieder her.

    Die Einstellung gibts zum einen global:

    [Settings]
    QuickAndDirtyMode=1

    Zum Anderen kann man sie auch individuell für einzelne Geräte im jeweiligen ComPorts-Abschnitt vornehmen und so die globale Einstellung überstimmen:

    [ComPorts20]
    DeviceId=FTDIBUS*
    PortNames=COM3,COM4
    QuickAndDirtyMode=0


    Windows COM-Name-Arbiter

    Für jeden COM-Port setzt Windows in der Registry ein Bit, damit dieser Port niemals für neue Geräte verwendet wird. Daher die endlos ansteigenden COM-Port-Nummern...
    Ein Tool zum manuellen Zurücksetzen der Bits ist mein COM Name Arbiter Setter.

    ComPortMan kann hier auch aufräumen, das tut es beim Dienst-Start und wenn ein COM-Port aus dem System entfernt wurde.

    Beispiel: Reservierung für Ports 3, 4 und 10-256 aufheben:

    [Settings]
    ComNameArbiterClean=3,4,10-256

    Für aktuell vorhandene Ports wird die Reservierung aber nicht aufgehoben, außerdem paßt ComPortMan die Reservierung an, wenn es einen Port ändert.


    Nach dem Entfernen Gerät aus dem Windows-Gerätemanagement löschen

    Wenn man mit einer großen Zahl immer neuer Geräte arbeitet, die eh nie wieder angeschlossen werden, kann man sie nach dem Entfernen aus dem Gerätemanagement löschen lassen:

    Für den COM-Port:

    [Settings]
    RemovePortDeviceOnRemoval=1

    Für das USB-Gerät:

    [Settings]
    RemoveUsbDeviceOnRemoval=1


    Debug-Infos

    Wenn es Probleme gibt, kann man u.U. anhand von Debug-Ausgaben herausfinden, was schiefläuft.
    Für Ausgaben in die Log-Datei ist WriteLogFile=1 zu setzen. Standardmäßig wird eine _ComPortMan.log ins Stammverzeichnis des Windows-Laufwerks geschrieben. Mit LogFile=Pfad\Datei läßt sich ein anderes Ziel festlegen.
    Für Live-Debug-Ausgaben, die man mit SysInternals DebugView einfangen kann, ist WriteDebugInfo=1 zu setzen.
    Wie dedailiert die Ausgaben ausfallen, wird über den LogLevel 1 bis 5 gesteuert, wobei ab 4 extrem ins Detail geht. Beispiel:

    [Settings]
    LogLevel=3
    WriteLogFile=1
    LogFile=C:\ComPortMan.LOG
    WriteDebugInfo=1

    Die ComPortMan.log wird beim Start in ComPortMan_BAK.log umbenannt, eine vorhandene ComPortMan_BAK.log wird gelöscht.





    Balloon-Tips



    Auch wenn man dank ComPortMan ja weiß, welche Portnummern zugeordnet werden, ist es ganz nützlich, es nochmal angezeigt zu bekommen...
    Wenn aktiviert zeigt ComPortMan ein kleines Hinweis-Fenster mit dem oder den zugeordneten Ports. Der BallonTip verschwindet, wenn man draufklickt oder nach Ablauf der Anzeige-Zeit. Diese beträgt 6 Sekunden plus eine halbe Sekunde pro weiterem angezeigten Port und kann in Millisekunden eingestellt werden:

    [BalloonTips]
    Enabled=1
    Timeout=6000

    Wird die Maus über dem Balloon-Tip bewegt, beginnt die Zeit von vorn.

    Ab V0.9.3 gibts auch Balloon-Tips beim Entfernen, standardmäßig dann, wenn Enabled=1 ist. Standard-Anzeige-Zeit ist halb so lang wie beim Anschließen. Beides kann separat eingestellt werden:

    [BalloonTips]
    EnabledOnRemoval=1
    TimeoutOnRemoval=3000



    COM-Ports abhängig von Kriterien




    Man benötigt mehrere Abschnitte [ComPortsXX], in denen jeweils andere Kriterien festgelegt sind.

    ComPortMan liest [ComPorts1] bis [ComPorts99] und zuletzt [ComPorts] und überprüft die dort festgelegten Kriterien. Der erste Abschnitt mit passenden Kriterien wird benutzt.

    Am besten konfiguriert man Abschnitte in 10er-Schritten, dann kann mal problemlos einen Abschnitt einfügen, ohne neu zu numerieren.

    Jeder Abschnit braucht mindestens ein Kriterium.

    Untypisches Beipiel zum Verdeutlichen der Funktionsweise, Kriterien in grün, Ziel-Ports in violett:

    [ComPorts10]
    DeviceID1=USB\VID_067B&PID_2517
    DeviceID2=USB\VID_1234&PID_5678
    PortName1=COM5
    PortName2=COM6

    Dieser Abschnitt wird benutzt, wenn ein COM-Port entweder DeviceID USB\VID_067B&PID_2517 oder USB\VID_1234&PID_5678 hat angeschlossen wird.
    Der Port bekommt dann COM5 zugeordnet falls verfügbar, sonst COM6. Wenn beide belegt sind, bleibt die Portnummer unverändert.

    Hier besteht kein Zusammenhang zwischen den Nummern!

    Typisches Beispiel um o.g. Ports auf je einer bestimmten Portnummer zu haben:

    [ComPorts10]
    DeviceID=USB\VID_067B&PID_2517
    PortName=COM5

    [ComPorts20]
    DeviceID=USB\VID_1234&PID_5678
    PortName=COM6

    Wenn zwei verschiede Geräte die selbe Portnummer bekommen sollen (natürlich nicht gleichzeitig), numeriert man Kriterien gleichen Types, hier für die zwei verschiendenen DeviceIDs:

    [ComPorts10]
    DeviceID1=USB\VID_067B&PID_2517
    DeviceID2=USB\VID_1212&PID_8976
    PortName=COM5

    Hier muß dann eine der DeviceIDs passen.


    Ein weiteres Beispiel:

    Einen bestimmten COM-Port nicht anfassen, alle anderen USB-COM-Ports auf COM3, 4 oder 5

    ;Samsung Modems nicht ändern
    [ComPorts10]
    KernelName=\Device\sscdmdm*
    PortName=

    ;alle anderen USB-COM-Ports auf COM3, 4, 5
    [ComPorts20]
    DeviceID=USB\*
    PortName1=COM3
    PortName2=COM4
    PortName3=COM5

    Oder kürzer mit der Listennotation:

    [ComPorts20]
    DeviceID=USB\*
    PortNames=COM3,COM4,COM5






    COM-Port abhängig vom Kernel-Namen



    Der Kernel-Name ist das wohin der "DOS device name" (COM1, COM2 usw) über einen "symbolic link" verweist.

    Intere ISA oder LPC-Port haben Namen wie \Device\Serial0, \Device\Serial1 usw. Der Kernel-Name anderer Geräte wird von deren Treiber festgelegt, so dass dieser sich zur Identifikation bestimmter Ports eignet.


    ComPortInfo zeigt den Kernel-Namen:

    PortName      : COM1
    KernelName    : \Device\Serial0
    DeviceID      : ACPI\PNP0501\1
    FriendlyName  : Communications Port (COM1)
    IRQ           : 7
    Port          : 3F8

    PortName      : COM7
    KernelName    : \Device\sscdmdm0
    DeviceID      : USB\VID_04E8&PID_6601&MI_00\9&34C622D7&0&4_00
    FriendlyName  : SAMSUNG Mobile Modem #2

    PortName      : COM4
    KernelName    : \Device\QCUSB_COM4_2
    DeviceID      : USB\VID_12D1&PID_1001&MI_01\7&36AC8E78&0&0001
    FriendlyName  : HUAWEI Mobile Connect - 3G Application Interface (COM4)



    Beispiel:

    ;Samsung und the Huawei-Modems nicht anfassen
    [ComPorts10]
    KernelName1=\Device\sscdmdm*
    KernelName2=\Device\QCUSB_COM*

    ;alle anderen USB-COM-Ports
    [ComPorts20]
    ParentDeviceID=USB\*
    PortNames=COM3,COM4




    COM-Port abhängig von der Device-ID




    ComPortInfo zeigt die Device-IDs:

    PortName       : COM1
    KernelName     : \Device\Serial0
    DeviceID       : ACPI\PNP0501\1
    ParentDeviceID : PCI\VEN_8086&DEV_2918&SUBSYS_00000000&REV_02\3&13C0B0C5&0&F8
    FriendlyName   : Communications Port (COM1)
    IRQ            : 7
    Port           : 3F8

    PortName       : COM4
    KernelName     : \Device\sscdmdm0
    DeviceID       : USB\VID_04E8&PID_6601&MI_00\9&34C622D7&0&4_00
    ParentDeviceID : USB\VID_04E8&PID_6601\7&310D02EB&1&3
    FriendlyName   : SAMSUNG Mobile Modem #2

    PortName       : COM6
    KernelName     : \Device\QCUSB_COM6_1
    DeviceID       : USB\VID_12D1&PID_1001&MI_01\7&36AC8E78&0&0001
    ParentDeviceID : USB\VID_12D1&PID_1001\6&33F5ECF6&0&4
    FriendlyName   : HUAWEI Mobile Connect - 3G Application Interface (COM4)

    PortName       : COM7
    KernelName     : \Device\VCP0
    DeviceID       : FTDIBUS\VID_0403+PID_6001+FTF6DPKEA\0000
    ParentDeviceID : USB\VID_0403&PID_6001\FTF6DPKE
    FriendlyName   : USB Serial Port (COM7)


    Beispiel:

    ;Samsung und Huawei-Modems nicht anfassen
    [ComPorts10]
    DeviceID1=USB\VID_04E8&PID_6601*
    DeviceID2=USB\VID_12D1&PID_1001*

    ;alle anderen USB-COM-Ports
    [ComPorts20]
    ParentDeviceID=USB\*
    PortNames=COM3,COM4

    Manche USB-COM-Ports haben keine USB\xxx Device-ID, das übergeordnete Gerät (ein USB-Hub oder Root-Hub) aber schon.

    Oder einfach das Kriterium BusType nutzen:

    ;alle anderen USB-COM-Ports
    [ComPorts20]
    BusType=USB
    PortNames=COM3,COM4





    COM-Ports abhängig vom FriendlyName



    FrienlyName ist der lesbare Gerätename, der auch im Gerätemanager angezeigt wird.
    ComPortInfo zeigt ihn:

    PortName      : COM1
    KernelName    : \Device\Serial0
    DeviceID      : ACPI\PNP0501\1
    FriendlyName  : Kommunikationsanschluss (COM1)
    IRQ           : 7
    Port          : 3F8

    PortName      : COM7
    KernelName    : \Device\sscdmdm0
    DeviceID      : USB\VID_04E8&PID_6601&MI_00\9&34C622D7&0&4_00
    FriendlyName  : SAMSUNG Mobile Modem #2

    PortName      : COM4
    KernelName    : \Device\QCUSB_COM4_2
    DeviceID      : USB\VID_12D1&PID_1001&MI_01\7&36AC8E78&0&0001
    FriendlyName  : HUAWEI Mobile Connect - 3G Application Interface (COM4)



    Beispiel:

    ;Samsung und Huawei-Modems nicht anfassen
    [ComPorts10]
    FriendlyName1=SAMSUNG Mobile Modem *
    FriendlyName2=HUAWEI Mobile Connect *

    ;alle anderen USB-COM-Ports
    [ComPorts20]
    ParentDeviceID=USB\*
    PortNames=COM3,COM4





    COM-Ports abhängig vom BusType



    BusType meint die Art des Anschlusses. Folgende kennt ComPortMan:
  • USB
  • PCMCIA
  • PCI
  • ISA
  • UNKNOWN

    ComPortInfo zeigt den BusType:

    PortName       : COM1
    KernelName     : \Device\Serial0
    DeviceID       : ACPI\PNP0501\1
    ParentDeviceID : PCI\VEN_8086&DEV_2918&SUBSYS_00000000&REV_02\3&13C0B0C5&0&F8
    FriendlyName   : Communications Port (COM1)
    BusType        : ISA
    IRQ            : 4
    IoPort         : 3F8

    PortName       : COM4
    KernelName     : \Device\sscdmdm0
    DeviceID       : USB\VID_04E8&PID_6601&MI_00\8&A4D665B&0&3_00
    ParentDeviceID : USB\VID_04E8&PID_6601\7&310D02EB&1&3
    FriendlyName   : SAMSUNG CDMA Modem #2
    BusType        : USB

    PortName       : COM7
    KernelName     : \Device\VCP0
    DeviceID       : FTDIBUS\VID_0403+PID_6001+FTF6DPKEA\0000
    ParentDeviceID : USB\VID_0403&PID_6001\FTF6DPKE
    FriendlyName   : USB Serial Port (COM7)
    BusType        : USB



    Beispiel:

    ;jeden USB-COM-Port auf COM3 oder 4
    [ComPorts20]
    BusType=USB
    PortNames=COM3,COM4





    COM-Ports abhängig vom USB Port




    Beispiel:

    [ComPorts10]
    UsbPort=1-2-3
    PortName=COM7


    ComPortInfo zeigt den USB-Port:

    PortName       : COM7
    KernelName     : \Device\VCP0
    DeviceID       : FTDIBUS\VID_0403+PID_6001+FTF6DPKEA\0000
    ParentDeviceID : USB\VID_0403&PID_6001\FTF6DPKE
    FriendlyName   : USB Serial Port (COM7)
    BusType        : USB
    UsbPort        : 1-2-3



    Der USB-Port als Kriterium ist auch gut geeignet um USB-Mehrfach-Adapter in der erwarteten Reihenfolge COM-Ports zuzuordnen. Die Reihenfolge in der Windows die Ports meldet stimmt leider nicht zwangläufig mit der Hardware überein.
    Mit dem letzen Teil des USB-Port-Names hat man aber die Portnummer innerhalb des Multi-Adapters als Kriterium zur Verfügung:

    Beispiel für einen Prolific 4-fach Adapter auf COM11 bis COM14 in der erwateten Reihenfolge:

    [ComPorts21]
    PortName=COM11
    FriendlyName=Prolific*
    UsbPort=*-1

    [ComPorts22]
    PortName=COM12
    FriendlyName=Prolific*
    UsbPort=*-2

    [ComPorts23]
    PortName=COM13
    FriendlyName=Prolific*
    UsbPort=*-3

    [ComPorts24]
    PortName=COM14
    FriendlyName=Prolific*
    UsbPort=*-4


    Hinweis: Mit V0.8.3 hat sich die erste Stelle im Port-Namen geändert. Damit ist ComPortMan kompatibel mit USBDLM und UsbTreeView.









    COM-Ports abhängig von der Location-Infomation




    Beispiel:

    [ComPorts10]
    Location=Port_#0002.Hub_#0003
    PortName=COM7


    ComPortInfo zeigt die Location-Info:

    PortName       : COM80
    KernelName     : \Device\ProlificSerial0
    DevicePath     : \\?\usb#vid_067b&pid_2303#7&30673e26&0&1#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
    KernelNameDevp : \Device\0000019b
    DeviceID       : USB\VID_067B&PID_2303\7&30673E26&0&1
    ParentDeviceID : USB\VID_0416&PID_5518\6&3893146&0&3
    DriverKeyName  : {4d36e978-e325-11ce-bfc1-08002be10318}\0086
    FriendlyName   : Prolific USB-to-Serial Comm Port (COM80)
    BusType        : USB
    Service        : Ser2pl
    Location       : Port_#0001.Hub_#0007
    UsbPort        : 1-2-3


    Manchmal ist die Location-Info des übergeordneten Gerätes hilfreich, die ParentLocation.

    [ComPorts10]
    ParentLocation=Port_#0002.Hub_#0003
    PortName=COM7

    Das übergeordnete Gerät zeigt ComPortInfo als "Controller":

         ========================= Controller =========================

    DevInst           = 13464
    Device ID         = USB\VID_9710&PID_7840\6&32B66D4F&0&2
    Hardware IDs      = USB\VID_9710&PID_7840&REV_0001, USB\VID_9710&PID_7840
    Description       = High-Speed USB MultiSerial Compound Device
    Driver Key Name   = {50906cb8-ba12-11d1-bf5d-0000f805f530}\0003
    Service           = mos24ser_QUADPORT
    Driver            = C:\Windows\system32\DRIVERS\mos24ser_QUADPORT.sys (Version: 2.0.2.0  Date: 2012-10-03)
    Legacy BusType    = PNPBus Bus Number        = 0
    Enumerator        = USB
    PDO               = \Device\00000181
    Manufacturer      = ASIX Electronics Corporation.
    Class             = MultiPortSerial
    Class GUID        = {50906cb8-ba12-11d1-bf5d-0000f805f530}
    Location          = Port_#0002.Hub_#0003


     





    Wildcards



    Bei der Konfiguration aller Kriterien können Wildcards (=Platzhalterzeichen) benutzt werden. 
    Dabei steht der Stern '*' für Null bis n Zeichen, das Fragezeichen '?' für genau ein Zeichen.

    Buchstaben werden unabhängig von Groß/Kleinschreibung ausgewertet.


    Beispiel        | paßt für                | paßt nicht für
    ----------------+-------------------------+------------------
    \Device\Serial? | \Device\Serial0,        | \Device\Serial20
                    | \Device\Serial9         |
    ----------------+-------------------------+------------------
    USB\VID_*       | alles was mit USB\VID_  | PCI\VEN_...
                    | beginnt                 |
    ----------------+-------------------------+------------------
    *\VID_*         | alles was USB\VID_      | PCI\VEN_...
                    | enthält                 | 
    ----------------+-------------------------+------------------
    2-1-*           | 2-1-1, 2-1-7, 2-1-1-3   | 2-1, 1-1-1
    ----------------+-------------------------+------------------
    2-1-?           | 2-1-1, 2-1-7            | 2-1, 2-1-1-3
    ----------------+-------------------------+------------------
    *-1             | 2-1-1, 13-5-1           | 1-2, 13-5-2
    ----------------+-------------------------+------------------








    Technische Infos



    Hier ein paar Hintergrundinformatioen - was mir gerade so eingefallen ist. Manches findet sich auch an anderer Stelle in dieser Hilfe.


    Window-Dienst

    ComPortMan ist ein Window-Dienst. Window-Dienste werden als solche in die Registry eingetragen und vom "Service Control Manager" gestartet und angehalten.

    Dienste laufen meist im Kontext "Local System" und habe dort maximale Privilegien. ComPortMan ist ein Win32-Dienst, also kein Kernel-Dienst. Als Kernel-Dienst könnte man ihn mit dem Start-Typ "System" versehen - so wäre sichergestellt, dass er vor dem Nutzer-Login fertig geladen ist. Win32-Diensten ist das nicht vergönnt - hier ist "Automatisch" der frühestmögliche Start. Damit ist es möglich, dass der Nutzer eingeloggt wird, bevor ComPortMan startet, siehe auch "ComPortMan-Dienst startet zu spät" unter Probleme.





    Generieren einer MSI-Datei




    Mit einer MSI-Datei kann man ComPortMan mittels Gruppenrichtlinie im Netzwerk verteilen - Admin wissen das besser als ich...

    Zum Erstellen des MSI wird das Microsoft WIX toolset genutzt. Hier sind im WiX-Script für Product- und Package-ID ein "*" konfiguriert, so dass WiX immer neue GUIDs generiert. So funktionieren Updates, zum Deinstallieren muß aber die selbe Version wie zur Installation genutzt werden.

    Hier gibts das WIX-script für ComPortMan: ComPortMan.WXS

    Und hier das Microsoft WIX toolset. Die WIX35.MSI herunterladen, mit recht anklicken -> Installieren.
    Fall ein Warndialog kommt, mit OK bestätigen (da gehts nur um die Visual Studio Integration).

    WiX instlalliert sich in den Standard-Programme-Ordner, typischerweise "C:\Programme\Windows Installer XML v3.5".

    WiX benötigt das .NET Framework 3.5 SP1.

    Dann die angepaßte ComPortMan.INI in den ComPortMan-Ordner kopieren, ebenso die ComPortMan.WXS. In der ComPortMan.WXS ComPortMan_sample.ini in ComPortMan.ini ändern.

    Dann im ComPortMan-Ordner eine CMD- oder BAT-Datei anlegen, die das MSI generiert, etwa so:


    @echo off
    set WiX_Path=%ProgramFiles%\Windows Installer XML v3.5\bin

    if not exist "%WiX_Path%" echo !!!!!!!!!!! WiX nicht gefunden !!!!!!!!!!!!! & pause & goto ExitPoint

    rem -- sicherstellen, dass der ComPortMan-Ordner der aktuelle ist --
    %~d0
    cd %~p0

    rem -- WiX candle und light ausführen, Pause falls Fehler --

    "%WiX_Path%\candle.exe" -dProcessorArchitecture=x86 -arch x86 -out ComPortMan.wixobj ComPortMan.wxs
    if errorlevel 1 pause & goto ExitPoint

    "%WiX_Path%\light.exe" -out ComPortMan.msi ComPortMan.wixobj 
    if errorlevel 1 pause & goto ExitPoint

    rem -- aufräumen --
    del ComPortMan.wixobj
    del ComPortMan.wixpdb

    :ExitPoint


    Für die x64-Version ist zweimal x86 in x64 zu ändern:
    "%WiX_Path%\candle.exe" -dProcessorArchitecture=x64 -arch x64 -out ComPortMan.wixobj ComPortMan.wxs


    Die Datei ComPortMan.wixpdb wird dort angelegt, wo auch das MSI hinkommt. Wenn man also einen alternativen Ausgabepfad angibt (-out), dann diesen auch in der Zeile mit "del ComPortMan.wixpdb" angeben.















    Probleme



    Falscher COM-Port für einen kurzen Moment

    Ein neu angeschlossenden COM-Port überprüft ComPortMan die Portnummer zum frühstmöglichen Zeitpunkt. Wenn aber eine Anwendung auch diesen frühstmöglichen Zeitpunkt nutzt, sieht sie u.U. den alten COM-Port, den ComPortMan dann gleich ändert. Das dauert je nach Treiber bis zu vier Sekunden, es sei denn man nutzt den Quick-and-dirty-Modus.


    Fehler 193

    Wenn der Start des ComPortMan-Dienstes mit Fehler 193 fehlschlägt (ERROR_BAD_EXE_FORMAT), liegt das warscheinlich an unzureichenden Zugriffsrechten auf die ComPortMan.EXE. Das Konto "SYSTEM" muß für den ComPortMan-Ordner mindestens das Recht "Lesen, Ausführen" haben.
    Einstellen kann man das mit Rechtsklick auf den Ordner -> Eigenschaften -> Reiter "Sicherheit".


    COM-Portnamen

    Im Gegensatz zu Laufwerksbuchstaben ist die Vergabe von COM-Port-Numern extrem simpel gestrickt:

    Immer wenn ein neues Gerät installiert wird, das einen COM-Port bereitstellt, ordnet Windows dem COM-Port die erste noch nie für einen COM-Port benutzte Nummer zu.
    Jede COM-Port-Nummer merkt sich Windows als benutzt damit niemals zwei Geräte die selbe Nummer haben.
    Leider bleiben selbst die Ports schon längst deinstallierter Geräte als reserviert markiert, so dass man hier ein lästiges endloses Hochzählen der Portnummern erhält.

    Die Rerservierung speichert Windows in der Registry unter
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
    Dort sind 32 Bytes mit je 8 Bit hinterlegt, jedes gesetzte Bit steht für einen reservierten COM-Port von 1 bis 256.

    Hier mein Tool zum manuellen Freigeben der Reservierungen, der COM Name Arbiter Setter.

    Wenn ein COM-Port im System erscheint, existiert zunächst nur ein Kernel-Object, sowas wie \Device\Serial1. Damit man unter Win32 den Port öffnen kann, wird ein "Symbolic Link" angelegt, der von sowas wie COM1 auf das Kernel-Objekt verweist. Der Versuch so einen Symbolic Link von einem bereits vorhanden COM-Namen anzulegen, schlägt fehl, das Gerät startet nicht. Damit genau das nicht passiert, gibt es in der Registry den COM Name Arbiter.

    ComPortMan steht hier nun vor dem Dilema, dass er u.U. Ports zuordnen soll, die laut Arbiter reserviert sind.
    Deshalb schaut er alle nicht angeschlossenen Ports durch, ob sie den selben Port in der Registry hinterlegt haben. Wenn ja, wurde bis V0.94 die Einstellung auf einen anderen, freien, hohen Port geändert, der Port wird dort "geparkt", um zu garantieren, dass das Port-Gerät starten kann, falls es gleichzeitig angeschlossen wird, denn nur wenn das Gerät startet, bekommt ComPortMan eine Nachricht und kann auf den konfigurierten Wunschport ändern. Ein schönes Gefrickel...
    Ab V0.95 ist das nicht mehr nötig, da ComPortMan auch neue Geräte erkennt die nicht korrekt gestartet sind. Hier wird dann der Port entsprechend der Konfiguration geändert und das Gerät neu gestartet.



















    COM Port Info Tool



    Das Tool "COM Port Info", kurz ComPortInfo zeigt Informationen über COM-Ports, kann Portnummern ändern und tauschen, "Hardware sicher entfernen" und Geräte neu starten.


    Anzeige-Modi

    Es gibt zwei Tabs mit den Anzeige-Modi "COM Ports" und "BusTypes": Unter "COM Ports" werden die Ports nach Nummer sortiert angezeigt, unabhängig vom BusType. Unter "BusTypes" werden die Ports in einem vereinfachten Gerätebaum wie im Gerätemanager angezeigt. Ports an einem gemeinsamen übergeordneten Gerät werden nach USB-Port sortiert (bei einem COM-Port pro USB-Port), sonstige nach Geräte-ID.

    Funktionen

    Ein Rechtsklick auf ein Gerät öffnet ein Kontextmenü. Hier werden "Hardware sicher entfernen" (Safely remove), "Geräte-Neustart" (Restart device) und "Geräte-Eigenschaften" (Device properties) angeboten. Bei COM-Ports kann zudem die Portnummber geändert oder mit einem anderen Port getauscht werden.

    Geräte-Neustart und das Ändern der Port-Nummer sind nur verfügbar wenn ComPortInfo mit Administrator-Rechten gestartet wurde.


    Optionen

    Autorefresh
    Wenn aktiviert wird die Anzeige beim Anschließen und Entfernen von Ports automatisch aktualisiert, sonst muss man dafür F5 drücken

    Show Port Parameters
    Wenn aktiviert werden die Parameter des Ports angezeigt, so wie das letzte Programm, welches den Port benutzt hat, sie hinterlassen hat (die diesbezüglichen Einstellungen im Gerätemanager sind übrigens wirkungslos).
    Wenn hier ein Fehler ERROR_SHARING_VIOLATION oder ERROR_ACCESS_DENIED angezeigt wird, ist der Port von einem anderen Programm geöffnet.

    Show ComPortMan Criteria
    Wenn aktiviert werden für die Ports Kriterien angezeigt, die sich so in der Konfiguration von ComPortMan nutzen lassen

    Font
    Erlaubt, die Schriftart für den Text im rechten Bereich einzustellen

    Background Color
    Erlaubt, die Hintergrundfarbe für den Text im rechten Bereich einzustellen






    History



    V0.9.6.0 (07. Februar 2017)
  • Neu: Kriterien Location und ParentLocation
  • Bugfix: In ComPortInfo hat das Generieren eines vollständigen Reports nicht funktioniert

    V0.9.5.0 (11. Dezember 2016)
  • Neu: _install.cmd und _uninstall.cmd in das umbenannt was sie wirklich tun: _service_register.cmd und _service_deregister.cmd; _start.cmd und stop.cmd wurden umbenannt in _service_start.cmd und _service_stop.cmd damit sie ins Namensschema passen 
  • Neu: ComPortMan erkennt auch COM-Port-Geräte die nicht starten, z.B. weil ihr Port bereits belegt ist. Um dies zu vermeiden hat ComPortMan bisher beim Entfernen auf COM200 aufwärts geändert, damit sie beim nächsten Anschließen mit Sicherheit starten und dann geändert werden können. Das ist jetzt nicht mehr nötig.
  • Neu: Wenn im Quick&Dirty-Modus ein geänderter Port entfernt wird, wird dessen Treiber versuchen den ursprünglichen Port zu löschen. Falls dieser Port inzwischen durch ein anderes Gerät benutzt wird, bemerkt ComPortMan das Löschen und stellt den Portnamen wieder her.
  • Neu: Kommandozeilen-Tool ListComPorts durch GUI-Tool ComPortInfo ersetzt

    V0.9.4.0 (13. July 2015)
  • Bugfix: Bei -install und -uninstall hat ComPortMan V0.9.3 nichts gemacht, nur die Hilfe geöffnet

    V0.9.3.0 (17. Mai 2015)
  • Bugfix: ComNameArbiterClean hat nicht richtig funktioniert
  • Bugfix: FriendlyNames wurden nicht immer korrigiert
  • Neu: BalloonTips beim Entfernen

    V0.9.2.0 (10. Mai 2015)
  • Neu: FriendlyName wird auch dann überprüft und korrigiert, wenn ComPortMan die Portnummer nicht geändert hat
  • Neu: Portnummen werden im "COM Name Arbiter" Registry-Schlüssel auch dann als belegt markiert, wenn ComPortMan die Portnummer nicht geändert hat
  • Neu: Portnummer-Konfilikte (Windows ordnet eine belegte Portnummer zu) werden auch dann behoben, wenn ComPortMan die Portnummer nicht geändert hat

    V0.9.1.0 (01. Oktober 2014)
  • Neu: COM-Ports von Geräten der Klasse "Modem" werden behandelt

    V0.9.0.0 (18. Februar 2014)
  • Bugfix: Für USB-Geräte die an USB3-Controller angeschlossen sind wurde der Portname nicht korrekt ermittelt

    V0.8.9.0 (18. Februar 2014)
  • Bugfix: Bei Ports mit Geräteinterface GUID_DEVINTERFACE_USB wurde das Entfernen des Gerates nicht verarbeitet
  • Neu: Einstellung RemoveDosDeviceNameOnRemoval

    V0.8.8.3 (17. Februar 2014)
  • Neu: Funktioniert mit Geräten mit Geräteinterface GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR und GUID_DEVINTERFACE_USB (bisher nur GUID_DEVINTERFACE_COMPORT)
  • Bugfix: Bestimmung des USB-Ports hat mit Texas Instrumens USB3-Controllern nicht funktioniert

    V0.8.7.0 (15. Mai 2013)
  • Neu: Nach Entfernen eines COM-Ports kann das Gerät aus dem Gerätemanager entfernt werden, siehe Settings

    V0.8.6.0 (15. Mai 2013)
  • Bugfix: Wenn ein COM-Port zugeordet wird, ändert ComPortMan jetzt derzeit nicht angeschlossene Geräte die den selben COM-Port konfiguriert haben auf eine Portnummer >200. Mit der selben Portnummer würde das Gerät nicht starten.

    V0.8.5.0 (04. Juli 2012)
  • Bugfix: -silentstop (wird vom MSI beim Deinstallieren genutzt) war nicht implementiert

    V0.8.4.0 (03. Juli 2012)
  • Bugfix: -install und -uninstall haben nicht funktioniert

    V0.8.3.0 (10. Juni 2012)
  • Bugfix: Falscher Balloontip wenn mehrere verschiedene COM-Geräte an den selben USB-Hub angeschlossen sind
  • Änderung: Die erste Stelle im USB-Portnamen wurde geändet um kompatibel mit USBDLM und UsbTreeView zu sein

    V0.8.2.0 (1. März 2012)
  • Bugfix: COM-Port entfernt wenn alle konfigurierten COM-Ports belegt sind

    V0.8.1.0 (29. Feb 2012)
  • Bugfix: Erkennung von Multi-Adaptern hat mit manchen Geräten nicht funktioniert
  • Neu: "Quick-and-dirty Modus" ist default, siehe Settings

    V0.8.0.0 (27. Feb 2012)
  • Neu: Schneller "Quick-and-dirty Modus" verfügbar, siehe Settings
  • Neu: Windows COM-Port Reservierungen können entfernt werden, siehe Settings

    V0.7.0.0 (22. Feb 2012)
  • Neu: COM-Ports sortiert im Balloontip

    V0.6.1.0 (17. Feb 2012)
  • Bugfix: Beim USB-Port-Namen fehlte bei manchen Geräten die letzte USB-Portnummer

    V0.6.0.0 (16. Feb 2012)
  • Bugfix: Fehlerhafte Behandlung von USB Multiport-Adaptern

    V0.5.0.0 (15. Feb 2012)
  • Neu: COM-Ports abhängig vom USB-Port
  • Neu: Balloontips beim Anschließen eines COM-Ports

    V0.1.0.0 (25. Jan 2012)
  • Erste veröffentlichte Version





    Software-Lizenz ComPortMan




    Stand 24. Januar 2012

    1. Gegenstand des Vertrages  
      Gegenstand des Vertrages ist die beiligende Software, die
      Programmbeschreibung und Bedienungsanleitung, sowie sonstiges zugehöriges
      schriftliches Material, im folgenden auch als Software bezeichnet. Der Autor
      macht darauf aufmerksam, dass es nach dem Stand der Technik nicht möglich ist,
      Computersoftware so zu erstellen, dass sie in allen Anwendungen und
      Kombinationen fehlerfrei arbeitet. Gegenstand des Vertrages ist daher nur
      eine Software, die im Sinne der Programmbeschreibung und der
      Benutzungsanleitung grundsätzlich brauchbar ist.

    2. Lizenzgewährung
      Der Autor gewährt jedem interessierten Anwender im privaten Umfeld, öffentlichen
      Bibliotheken deren Nutzung kostenlos ist, sowie Bildungseinrichtungen eine
      kostenlose Nutzungslizenz. Eine Bildungseinrichtung gilt als solche, wenn
      Schüler und Studenten gegenüber sonstigen Mitarbeitern in der Mehrheit sind.
      Es ist dann keine explizite Lizenzerteilung erforderlich.

      Sonstigen Anwendern wird eine Testlizenz für einen Testzeitraum von 30
      Kalendertagen eingeräumt. Nach Ablauf dieser Testlizenz muss der Anwender
      entweder eine Nutzungslizenz pro Computer erwerben oder die Software muss
      von den betreffenden Computern entfernt werden.

      Der Lizenznehmer erhält das nicht ausschließliche, unwiderrufliche,
      übertragbare, zeitlich und räumlich unbeschränkte Recht, die Software auf
      der entsprechenden Anzahl von Computern innerhalb seiner Firma bzw. 
      Organisation einzusetzen.

      Ausnahme ist die "Standort-Lizenz", die für eine unbegrenzte Anzahl von
      Computern innerhalb der Organisation des Lizenznehmers gültig ist, die
      sich in 160 Kilometer Umkreis oder auf Reisen befinden.
      
      Eine Weltweit-Lizenz gilt für eine unbegrenzte Anzahl von Computern innerhalb
      der Organisation des Lizenznehmers, egal wo.

      Die Nutzungslizenz gilt für alle Versionsnummern der Software jetzt und in
      Zukunft für die entsprechende Anzahl von Lizenzen.
      Der Lizenznehmer hat kein Recht auf Updateversorgung durch den Autor, da
      aktuelle Versionen zum Download stehen.

      Überprüfbarer Beleg für die Lizenz ist die überlassene Lizenznummer. Diese
      wird für den Betrieb der Software nicht benötigt. Die Software hat keine
      eingebauten Beschränkungen und läuft nicht ab.

      Die Software kann frei kopiert und weitergegeben werden, soweit folgende
      Bestimmungen beachtet werden:  Die Software darf nur in den vom Autor
      erstellten MSI- oder ZIP-Archiven weitergegeben werden. Keine Datei darf im
      Inhalt irgendwie verändert werden, außer für internen Gebrauch.

    3. Keine weiteren Rechtsansprüche  
      Der Autor ist sowohl Urheber als auch Eigentümer der Software, sowie in
      dieser Software verwendeter Algorithmen und Verfahren. Der Autor behält den
      Rechts- und Besitzanspruch an der Software.


    4. Keine Modifikationen oder Dekompilierung
      Es ist nicht gestattet, die Software oder Kopien im Ganzen oder teilweise
      zu verändern, zu übersetzen, zu disassemblieren oder zu dekompilieren.

    5. Redistribution
      Redistribution der unveränderten Software-Archivdateien auf CD/DVD von 
      Computer-Zeitschriften und sonstigen Publikationen ist gestattet.
      Zum Download bitte auf http://www.uwe-sieber.de/files/ComPortMan.zip verweisen.

    6. Haftungsausschluß-Erklärung
      Soweit gesetzlich zulässig, haftet der Autor oder der Händler auf keinen Fall
      für irgendwelche Schäden aus entgangenem Gewinn, Betriebsunterbrechung,
      Datenverlust, für Schäden an Hardware oder anderer Schäden gleich welcher Art,
      die aus der Benutzung dieser Software oder aus der Tatsache, dass sie nicht
      benutzt werden kann, resultieren, selbst wenn der Autor oder der Händler auf
      die Möglichkeit solcher Schäden hingewiesen oder unterrichtet wurden. In jedem
      Fall ist die gesamte Haftung seitens des Autors oder des Händlers unter
      jedweder Bestimmung begrenzt auf die Summe, die von Ihnen tatsächlich für
      diese Softwarelizenz bezahlt worden ist. Der Autor haftet nicht für Schäden,
      es sei denn, dass ein Schaden durch Vorsatz seitens des Autors verursacht
      worden ist. Gegenüber Kaufleuten wird auch die Haftung für grobe
      Fahrlässigkeit ausgeschlossen. Eine Haftung wegen evtl. vom Autor
      zugesicherten Eigenschaften bleibt unberührt. Eine Haftung für

      Mangelfolgeschäden, die nicht von der Zusicherung umfasst sind, ist
      ausgeschlossen.


    7. Gewährleistung
      Der Autor übernimmt keine Haftung für die Fehlerfreiheit der Software.
      Insbesondere übernimmt der Autor keine Gewähr dafür, dass die Software den
      Anforderungen und Zwecken des Erwerbers genügt oder mit anderen von ihm
      ausgewählten Programmen zusammenarbeitet. Die Verantwortung für die richtige
      Auswahl und die Folgen der Benutzung der Software, sowie der damit
      beabsichtigten oder erzielten Ergebnisse, trägt der Erwerber. Das gleiche gilt
      für das die Software begleitende schriftliche Material.


    8. Gesetzesanwendung
      Dieser Vertrag unterliegt der Gesetzgebung der Bundesrepublik Deutschland und
      ist so anzuwenden, als ob die betreffenden Rechtsgeschäfte in der
      Bundesrepublik Deutschland stattfänden.


    9. Auflagen
      Der Autor hat das Recht, den Vertrag und die Lizenzrechte sofort zu kündigen,
      falls Sie die Bestimmungen dieses Vertrages nicht erfüllen.