Abou Chleih

{the magic lies between the brackets}

Menü Schließen

Monat: März 2016

Windows 10 – DVD Laufwerk wird nicht erkannt

Eigentlich braucht man – oder zumindest ich – kein DVD Laufwerk mehr. Da ich aber noch eines in einer verstaubten Schachtel fand und es nicht entsorgen wollte, ist es direkt in meinen PC gewandert.
Leider wurde das Gerät nicht von Windows erkannt.
„Alles klar“, dachte ich. Führe ich eben im Geräte-Manager eine manuelle Suche durch. Gesagt, getan – keine Änderung.
Anschließend überprüfte ich alle Kabel und Anschlüsse. Auch hier war es korrekt angeschlossen, ebenso wird es im UEFI System Browser meines Motherboards erkannt.

Das Problem liegt also bei Windows. Und da es schon einige Personen mit ähnlichen Problemen gibt, dachte sich Microsoft wohl, dass ein Support Eintrag angebracht ist.

Diesen arbeitete ich ab, jedoch funktionierte bei mir nur Resolution 5 des Eintrags.

Also wie löste ich das Problem? 

Wir gehen in die Registry per Registry Editor (Win+R und regedit) und navigieren zum Pfad HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi.
Hier erstellen wir einen neuen Schlüssel (Ordner) Controller0 (ist eine Null) per Rechtsklick auf den Schlüssel atapi.
Anschließend navigieren wir in den Schlüssel und erstellen dort ein DWort mit 32-bit Länge:
Name: EnumDevice1
Wert: 1

Schlussendlich starten wir den Rechner einmal neu, das Laufwerk wird dann ordnungsgemäß erkannt.

Signieren von Visual Studio for Office Add-Ins (autom. Installation)

Bei normalen Windows Desktop oder Windows Phone Applikationen ist ein Signieren der Applikation nicht dringend nötig bzw. nur wenn die Herkunft des Executables verifiziert werden soll um lästige Abfragen zu vermeiden.
Auch bei sogenannten Visual Studio for Office Add-Ins (kurs: vsto) ist dies normalerweise nicht erforderlich.
Es sei denn, man will die Add-Ins nicht manuell per Registry Eintrag oder Bestätigungdialogen installieren, sondern automatisiert.
Egal welchen Fall man bevorzugt, man benötigt zu allererst die Visual Studio for Office Runtime (VSTOR).

Nach der Installation können wir nun mit einem Doppelklick auf die .vsto-Datei das Add-In installieren, allerdings bisher nur mit folgender Warnung:
warn_install_addin

Bei einer Automatisierung des Installationsprozesses soll dies nicht mehr passieren und der Prozess insgesamt im Hintergrund ausgeführt werden (silent install).
Dies funktioniert mit Hilfe der VSTOR – siehe Link oben – und der darin enthaltenen VSTOInstaller.exe.
Diese befindet sich nach der Installation im Verzeichnis C:\Program Files (x86)\Common Files\Microsoft Shared\VSTO\10.0.

Ein Start des Programms gibt uns direkt alle verfügbaren Parameter zurück (Ein Doppelklick auf eine ,vsto-Datei ruft übrigens auch nur dieses Programm mit dem Parameter /i <.vsto-Pfad> auf)

VSTOInstaller.exe [[/install <URL> ] | [/uninstall <URL>]] [/silent] [/help]

/install, /i: Projektmappe installieren. Nach dieser Option muss der vollqualifizierte Pfad eines Bereitstellungsmanifests im Format „http://“, „https://“ oder „\\Servername\Ordnername“ angegeben werden.

/uninstall, /u: Projektmappe deinstallieren. Nach dieser Option muss der vollqualifizierte Pfad eines Bereitstellungsmanifests im Format „http://“, „https://“ oder „\\Servername\Ordnername“ angegeben werden.

/silent, /s: Ohne Eingabeaufforderungen oder Informationseingaben installieren oder deinstallieren.

Nun wissen wir, dass der Aufruf für unsere Add-In Installation wie folgt aussehen muss:
VSTOInstaller.exe /i "<PFADZURVSTODATEI>" /s

Führen wir dies nun aus, werden wir merken, dass das Add-In nicht installiert ist.
Der Grund ist ganz einfach: Eine silent Installation lässt sich nur durchführen, wenn das Programm/Add-In mit einem validen Zertifikat signiert ist.

Natürlich könnten wir uns jetzt für viel Geld ein ordentliches Zertifikat von einer Authority kaufen, allerdings kostet das viel Zeit und Geld.
Zumal wir unsere Software meist nicht verkaufen, sondern nur intern nutzen.

Lösung: Eigenes Zertifikat mit Kette

Was braucht man für ein valides Zertifikat?

  • Eine gültige Certificate Chain, zu deutsch: Zertifikatskette, kurz: eine höherwertige Zertifizierungsstelle (Authority) muss das Zertifikat des Clients bestätigen.
  • Eine .pfx-Datei, mit welcher wir das Visual Studio Projekt signieren
  • Eine GPO, mit der wir die Zertifikate in unserem Netzwerk bekannt machen (wir selbst sind schließlich keine zertifizierte Authority, sonst könnten wir ja einfach Zertifikate von google.de erstellen und uns dafür ausgeben ;) )

Fangen wir also an.
Wir müssen ein Zertifikat erstellen – für eine Authority (wir fangen ganz oben in der Hierarchie an).
Was wir benötigen, ist also ein Programm, welches uns Zertifikate erstellt: MakeCert.exe – Documentation/Parameter Specification

Dieses Programm finden wir abhängig von der Visual Studio Version und den SDKs in einem der folgenden Pfade:

  • C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\makecert.exe
  • C:\Program Files (x86)\Windows Kits\8.0\bin\x86\makecert.exe

Wenn man sich die Dokumentation des Tools durchliest, kann man schnell entdecken, wohin die Reise nun geht:

makecert
-n "CN=MeinAuthorityName" #CN= muss immer voranstehen; specifies a name for the certificate.
-cy authority #Defines Certificate type (here: authority)
-a sha1 #Hash algorithm
-sv "MeinPrivateKeyFileFuerDieAuthority.pvk" #Name of the subject's .pvk file. Wird erstellt, wenn nicht vorhanden
-r "MeinAuthorityZertifikat.cer" #Creates a self-signed certificate.

Nun werden wir aufgefordert ein Passwort für das Private Key File zu erstellen (dies sollte ein kompliziertes Passwort sein).

Nun haben wir folgende Dateien:

  • MeinPrivateKeyFileFuerDieAuthority.pvk
  • MeinAuthorityZertifikat.cer

Diese benötigen wir nun, um ein Client Zertifikat zu erstellen, welches von unserer Authority ausgestellt ist (Chain).

makecert 
-n "CN=MeinClientZertifikatName" #specifies name of certificate
-ic "MeinAuthorityZertifikat.cer" #Location of the issuers certificate.
-iv "MeinPrivateKeyFileFuerDieAuthority.pvk" #Issuers (Aussteller = Authority) private key file.
-a sha1 #Hash algorithm
-sky exchange #Für Zertifikate nutzt man exchange (KeyExchange)
-pe #Marks the private key as exportable.
-sv "MeinPrivateKeyFileFuerDasClientZertifikat.pvk" #Erstellt ein .pvk file, falls nicht vorhanden für das Client Zertifikat &nbsp; 
"MeinClientZertifikat.cer" #Erstellt das Zertifikat mit angegebenem Namen

Nun werden wir entsprechend aufgefordert die Passwörter für das Authority Key File einzugeben, das Kennwort für das ClientZertifikatKeyFile zu definieren.
Als Ergebnis haben wir nun unser Client Zertifikat mit Private Key file.

  • MeinPrivateKeyFileFuerDasClientZertifikat.pvk
  • MeinClientZertifikat.cer

Die Zertifikatskette ist nun komplett, fehlt noch das .pfx File.

Um unsere Zertifikate in das .pfx Format zu konvertieren, bietet uns Microsoft ein Tool namens pvk2pfx.exe  an.

pvk2pfx.exe 
-pvk MeinPrivateKeyFileFuerDasClientZertifikat.pvk #Verweis auf das Private Key File des Clients
-spc MeinClientZertifikat.cer #Verweis auf das Cleint Zertifikat
-pfx MeinPfxZertifikat.pfx #Erstellt ein .pfx File 
-pi PasswortDesPrivateKeyFiles #Optional! Dialog kann ebenfalls genutzt werden 

Nun haben wir unser .pfx-File mit dem wir unsere Visual Studio Projekt signieren können.
Dazu einfach in das entsprechende

 Projekt -> Rechtsklick -> Eigenschaften -> Signierung -> Aus Datei wählen

und das entsprechende Zertifikat (.pfx) auswählen.

Signierung_VisualStudio

Nun müssen wir die Zertifikate und damit die Kette noch per GPO bekannt/valide machen.
Dies ist aber ein Thema für einen anderen Tag.

© 2018 Abou Chleih. Alle Rechte vorbehalten.

Thema von Anders Norén.