Ich denke, ich habe das gleiche Problem wie dieser Typ , aber ich hatte nicht so viel Glück wie er / sie, da die gelieferte Lösung bei mir nicht funktioniert.
Die bereitgestellte Lösung sucht nach Dateien in C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
( nicht in Unterverzeichnissen) und C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA
(und Unterverzeichnissen)
Da das Setup die Anwendung jedoch für alle Benutzer installieren soll, wird die benutzerdefinierte Aktion unter SYSTEM
-User ausgeführt, wodurch die tatsächlich erstellten Dateien in C:\ProgramData\Application Data\Microsoft\Crypto\RSA\S-1-5-18
ausgeführt werden.
Wenn Sie eine "normale" Anwendung als Admin ausführen (Rechtsklick - & gt; Als Admin ausführen), die genau den gleichen Code ausführt, wird eine Datei unter C:\Users\[Username]\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-1154405193-2177794320-4133247715-1000
erstellt.
Das mit der benutzerdefinierten WIX-Aktion generierte Zertifikat scheint keinen privaten Schlüssel zu haben (" Der Schlüsselsatz existiert nicht "), während das von der "normalen" Anwendung generierte Zertifikat dies tut.
Wenn man sich die Berechtigungen der Dateien anschaut, scheinen sie in Ordnung zu sein, auch wenn sie sich unterscheiden (der funktionierende enthält den SYSTEM
-Benutzer), selbst nach dem Hinzufügen von SYSTEM
one zum ("non-working" ") Datei Ich kann den privaten Schlüssel nicht lesen, der gleiche Fehler hier.
Dann habe ich die FindPrivateKey verwendet, um die entsprechende Datei zu finden, aber alles, was ich bekomme, ist "Unable to obtain private key file name"
.
Ok, was geht hier hin? Wo speichert Windows die privaten Schlüssel für Zertifikate, die vom Benutzer SYSTEM
gespeichert wurden? Vielleicht ist keine private Schlüsseldatei erstellt? Warum?
Ich habe eine Lösung gefunden, indem ich fast alles googelte ... so wie ich es verstehe, gibt es einige Dinge zu tun:
X509Certificate2
Also ist der letzte Code a der folgende:
%Vor%Tags und Links c# certificate uac custom-action private-key