kb:driver_software:driver_software_for_windows:windows_driver_package_-_silent_installation

Windows Driver Package - Silent Installation

Preliminary Information

Generell sollte eine Silent Installation der Treibersoftware für Windows möglich sein. Bei den Dateien dkwin*.exe handelt es sich um selbstextrahierende Archive, die das eigentliche Setup-Programm enthalten.

Um eine Silent Installation durchzuführen, sollte man also dkwin*.exe in ein leeres Verzeichnit entpacken, und in diesem Verzeichnis dann

setup /s

ausführen. Ein Problem bleibt jedoch bestehen: Bei der Installation des Kerneltreibers fragt Windows nach, ob man dem Zertifikat, mit dem der Treiber signiert wurde, vertrauen möchte. Diese Frage muss bejaht werden, damit die Installation weitergeführt wird.

Laut einiger Recherchen im Internet sollte es möglich sein, das Zertifikat ebenfalls per Kommandozeile vorab zu installieren, damit diese Nachfrage ausbleibt.

Mit diesem Powershell-Script sollte es möglich sein, das verwendete Zertifikat aus einer Treiber-Datei zu extrahieren:

$cert = (Get-AuthenticodeSignature “amd64\mbgclock.sys”).SignerCertificate; [System.IO.File]::WriteAllBytes(“c:\meinberg.cer”, cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert));

:!: Achtung: Wenn kein kompletter Pfad für die Ausgabe-Datei angegeben wird (c:\meinberg.cer im Beispiel oben), sondern nur der Dateiname, wird die Datei eventuell nicht im aktuellen Verzeichnis angelegt, sondern im Home-Verzeichnis des Benutzers.

Danach soll man mit Hilfe des Programms certutil.exe das Zertifikat importieren:

certutil.exe -f -addstore “TrustedPublisher” c:\meinberg.cer

Das funktioniert soweit, aber auf einem Testsystem fragt Windows trotzdem noch nach, ob man dem Zertifikat von Meinberg vertrauen möchte.

Der Grund dafür könnte sein, dass für die Überprüfung der Treibersignierung nicht nur das Meiberg-Zertifikat vorhanden sein muss, sondern auch das Root-Zertifikat von Globalsign, mit das Meinberg-Zertifikat signiert wurde, sowie das Cross-Zertifikat von Microsoft für GlobalSign, mit dem GlobalSign als Zertifizierungsstelle anerkannt wird.

Deshalb wurde mit certmgr eine Zertifikats-Datei OS201609054822.p7b erstellt, die die ganze Zertifikatskette enthalten sollte.

Die exportierte Datei OS201609054822.p7b enthält nur öffentliche Zertifikate, kein privates, das sowieso ein Passwort benötigen würde, und steht unter diesem Link zum Download zur Vergügung: * https://www.meinberg.de/download/meinberg-publict-certs/OS201609054822.p7b

Damit sollte das Powershell-Script oben überflüssig sein, und es sollte ausreichen, nur diese Zertifikats-Datei zu importieren mit dem Befehl

certutil.exe -f -addstore “TrustedPublisher” OS201609054822.p7b

Leider reicht dies scheinbar auch noch nicht aus, um die Abfrage von Windows bei der Installation des Treibers zu vermeiden. Weitere Tests sind erforderlich.

Zu beachten ist, dass die zu importierenden Zertifikate zu denen passen müssen, mit denen der Treiber tatsächlich signiert wurde. Die genannte .p7b-Datei enthält aktuelle Zertifikate, die z.B. zu dieser Treiberversion passen sollten:

Ältere Treiberversionen, z.B. dkwin-3-06-99-13.exe, wurden ggf. mit älteren Zertifikaten signiert, deshalb müssen dafür wahrscheinlich die entsprechenden älteren öffentlichen Zertifikate importiert werden. Es könnte ausreichen, die Powershell-Variante dafür auszuprobieren, das wurde aber noch nicht getestet.


Martin Burnicki martin.burnicki@meinberg.de 2019-08-21

  • kb/driver_software/driver_software_for_windows/windows_driver_package_-_silent_installation.txt
  • Last modified: 2020-09-21 12:44
  • by 127.0.0.1