以编程方式将证书添加到受信任的发布者
Add certificate to Trusted Publisher programmatically
我有一个已签名的 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
仍提示我将发布者添加到受信任的发布者。
如果我使用 certutil
certutil -addstore "TrustedPublisher" CertName.cer
那么 pnputil
就不会提示我了。
我也尝试从 certmgr.msc 手动导入证书,但它也没有用。
我不明白为什么只有 certutil
有效而其他方式(特别是 X509Store)无效。
问题是您在 CurrentUser
商店中安装证书,而它必须在 LocalMachine
商店中提供。 Certutil 默认为本地计算机。
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
我有一个已签名的 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
仍提示我将发布者添加到受信任的发布者。
如果我使用 certutil
certutil -addstore "TrustedPublisher" CertName.cer
那么 pnputil
就不会提示我了。
我也尝试从 certmgr.msc 手动导入证书,但它也没有用。
我不明白为什么只有 certutil
有效而其他方式(特别是 X509Store)无效。
问题是您在 CurrentUser
商店中安装证书,而它必须在 LocalMachine
商店中提供。 Certutil 默认为本地计算机。
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);