2012-09-09 60 views
14

我的学校网页具有自我信任的证书(必须手动安装),并且我想创建将从本地用户安装certificate.cer(从visual studio资源)的程序 - “受信任的根证书权威“后,我点击一个按钮。你知道如何在Visual C#中编码吗?如何以编程方式使用C#安装证书

+2

是的,我知道如何去做。那么你在解决这个问题时有什么问题,以及[你有什么尝试](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? –

+0

我用NativeWin32和DllImport(“user32.dll”)(SendKeys)试过它,但我无法弄清楚究竟是哪种类型。 – DroidBellmer

回答

43

要以当前用户的编程方式将证书添加到受信任的根存储中,请使用X509StoreX509Certificate2类。例如:

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(); 

另请参阅“How can I install a certificate into the local machine store programmatically using c#?”。

另一种选择是Certificate Manager command line (certmgr.exe)工具,具体包括:

certmgr /add cert.cer /s Root 

其中 “cert.cer” 是您的证书。这将其导入到当前用户的受信任根存储中。但是,certmgr.exe是Visual Studio和Windows SDK的一部分,可能不会自由分发。

+0

我是否需要管理权限才能运行此代码? –

+0

@Johnny_D您需要管理员访问权限来修改系统范围的证书存储区,例如“Root”。您不需要管理员访问权限来修改您的个人证书商店,例如“我的”。 – akton

+0

这是一些问题,因为我需要在Azure虚拟机中执行此操作。我是否应该以某种方式创建一个管理员用户并在添加证书的情况下模拟上下文? –

相关问题