C# 以编程方式将证书添加到受信任的发布服务器

C# 以编程方式将证书添加到受信任的发布服务器,c#,x509certificate2,certutil,C#,X509certificate2,Certutil,我有一个签名的usb驱动程序。我也有出版商提供的证书。 如果我尝试使用pnputil安装驱动程序 pnputil /add-driver CerttName.cer /install 有人问我是否要将发布服务器添加到受信任的发布服务器。 为了避免这种情况,我尝试通过编程方式将证书添加到受信任的发布服务器 string file = @"C:\Certificates\CertName.cer"; X509Store store = new X509Store(StoreName.Trusted

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

pnputil /add-driver CerttName.cer /install
有人问我是否要将发布服务器添加到受信任的发布服务器。 为了避免这种情况,我尝试通过编程方式将证书添加到受信任的发布服务器

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
提示我将发布服务器添加到受信任的发布服务器 如果我使用
certutil

certutil -addstore "TrustedPublisher" CertName.cer
然后我不会被
pnputil
提示

我还尝试从certmgr.msc手动导入证书,但也没有成功


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

问题是您正在
CurrentUser
store中安装证书,而它必须在
LocalMachine
store中显示。Certutil默认为本地计算机

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

如果我使用certutil,我会在CurrentUser.中看到证书,因为它是从
LocalMachine
传播的。