c# - 以编程方式将证书添加到受信任的发布者

标签 c# x509certificate2 certutil

我有一个已签名的 USB 驱动程序。我也有出版商提供的证书。 如果我尝试使用 pnputil

安装驱动程序
pnputil /add-driver CerttName.cer /install

系统询问我是否要将发布者添加到受信任的发布者。

为了避免这种情况,我尝试以编程方式将证书添加到 Trusted Publishers

string file = @"C:\Certificates\CertName.cer";
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(new X509Certificate2(X509Certificate2.CreateFromCertFile(file)));
store.Close();

证书已添加,但 pnputil 仍提示我将发布者添加到 Trusted Publishers。

如果我使用 certutil

certutil -addstore "TrustedPublisher" CertName.cer

那么 pnputil 就不会提示我了。

我也尝试从 certmgr.msc 手动导入证书,但它也没有用。

我不明白为什么只有 certutil 有效而其他方式(特别是 X509Store)无效。

最佳答案

问题是您在 CurrentUser 商店中安装证书,而它必须出现在 LocalMachine 商店中。 Certutil 默认为本地计算机。

X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);

关于c# - 以编程方式将证书添加到受信任的发布者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655567/

相关文章:

c# - WPF,TreeView,绑定(bind)到集合中对象内的属性

windows - 如何在没有提示的情况下使用 certutil 导入 pfx?

windows - 将 CertUtil -hashfile 的结果保存到变量并删除散列的空格

c# - HttpClient 已断开连接。试图读取流的末尾

c# - 有没有一种简单的方法可以从TimeSpan中检索开始时间戳

c# - 为什么 makecert 不制作*有效*证书?

.net - 如果使用 ChainPolicy RevitationMode Online,X590Certificate.Build 是否使用 OCSP?

c# - 如何检测证书的类型(A1 或 A3)?

C# 通过用户控制连接mysql