嵌入资源证书调用报错:路径包含非法字符
问题分析与解决方法
错误原因
X509Certificate2.CreateFromCertFile()方法要求传入证书文件的本地路径,但你把嵌入资源的证书二进制内容转成UTF8字符串传了进去,这不是合法的文件路径,自然触发"Illegal characters in path"错误。而且证书是二进制数据,转成UTF8字符串会破坏其结构,完全没必要。
修正后的代码
直接用嵌入资源返回的字节数组创建证书对象即可,不需要转字符串:
public static void TESTNEWINSTALL() { // 直接获取嵌入证书的字节数组 byte[] certBytes = Properties.Resources.FiddlerRoot; X509Certificate2 cert = new X509Certificate2(certBytes); X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadWrite); // 先检查证书是否已存在,避免重复添加报错 if (!store.Certificates.Find(X509FindType.FindByThumbprint, cert.Thumbprint, false).Any()) { store.Add(cert); } store.Close(); MessageBox.Show("证书安装完成"); }
额外说明
- 跳过字符串转换步骤,直接用二进制字节数组初始化证书,既避免了路径错误,也保证了证书数据完整。
- 加入存在性检查,防止重复安装相同证书抛出异常,提升代码健壮性。
内容的提问来源于stack exchange,提问作者user23300548
相关产品推荐
相关产品推荐

