2012-09-09 15 views
14

meine Schule Webseiten haben automatisches Zertifikat (Sie müssen es manuell installieren) und ich wollte Programm erstellen, die ein Zertifikat.cer (von Visual Studio-Ressourcen) zu lokalen Benutzer - "Trusted Root-Zertifikat Autorität ", nachdem ich auf eine Schaltfläche geklickt habe. Wissen Sie, wie man es in Visual C# programmiert?Wie programmgesteuert installieren ein Zertifikat mit C#

+2

Ja, ich weiß, wie es geht. Also, was ist das Problem, das Sie haben, wenn Sie es herausfinden und [was haben Sie versucht] (http://mattgemamm.com/2008/12/08/what-have-you-tried/)? –

+0

Ich versuchte es mit NativeWin32 und DllImport ("user32.dll") (SendKeys), aber ich kann nicht herausfinden, was genau dort eingeben. – DroidBellmer

Antwort

43

Verwenden Sie die Klassen X509Store und X509Certificate2, um das Zertifikat dem vertrauenswürdigen Stammspeicher für den aktuellen Benutzer programmgesteuert hinzuzufügen. Zum Beispiel:

string file; // Contains name of certificate file 
X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser); 
store.Open(OpenFlags.ReadWrite); 
store.Add(new X509Certificate2(X509Certificate2.CreateFromCertFile(file))); 
store.Close(); 

Siehe auch "How can I install a certificate into the local machine store programmatically using c#?".

Eine weitere Option ist das Certificate Manager command line (certmgr.exe) Tool, speziell:

certmgr /add cert.cer /s Root 

wo "cert.cer" ist Ihr Zertifikat. Dadurch wird es in den vertrauenswürdigen Stammspeicher für den aktuellen Benutzer importiert. Certmgr.exe ist jedoch Teil von Visual Studio und dem Windows SDK und möglicherweise nicht frei verteilbar.

+0

Benötige ich Administratorzugriff für das Konto, unter dem ich diesen Code ausführe? –

+0

@Johnny_D Sie benötigen Administratorzugriff zum Ändern systemweiter Zertifikatsspeicher wie "Root". Sie benötigen keinen Administratorzugriff zum Ändern Ihrer persönlichen Zertifikatspeicher, z. B. "Mein". – akton

+0

Das ist eine Art von Problem, da ich es innerhalb der virtuellen Azure-Maschine machen muss. Soll ich irgendwie einen Admin-Benutzer erstellen und den Kontext annehmen, in dem ich cetificate hinzufüge? –

Verwandte Themen