1

我试图弄清楚如何在 Windows 7 上创建硬件清单/报告,包括:

  • 系统中/连接到系统的所有设备。
  • 每个设备的驱动程序/设备信息(设备类型、制造商、驱动程序版本、驱动程序日期、驱动程序提供程序、驱动程序文件、硬件 ID)
    • 如果驱动程序经过数字签名 (WHQL) / 具有有效签名

我找到了这篇文章。 http://www.codeproject.com/KB/system/SimpleSetup.aspx这是一个 C++ 应用程序 - 我必须转换它。 http://www.codeproject.com/KB/cs/EverythingInWmi03.aspx - 这个基于 WMI(Windows 管理规范)

基本上这些链接有很大帮助,但两者都没有提供完整的解决方案。我从 WMI 方法开始并意识到,这种方式我无法获得所有必要的信息。尤其是“isDriverDigitallySigned”信息非常重要。我看过他们提到的文章,可以通过检索 x509 证书来检查设备驱动程序是否经过数字签名,例如:

           X509Certificate xcert = null;
        try
        {
            var d = new DirectoryInfo(@"c:\windows\system32\drivers");
            FileInfo[] allFiles = d.GetFiles();
            foreach (FileInfo f in allFiles)
            {
                xcert = X509Certificate.CreateFromSignedFile(f.Name);
                Console.WriteLine(f.Name + "\t" + xcert.GetName() + "\t" +
                                  xcert.GetPublicKeyString());
            }
        }

但剪断不起作用 - 在任何 .sys 文件上都不能“提取”证书(CreateFromSignedFile)

我正在用 C# 编码。

帮助表示赞赏。

4

1 回答 1

0

您使用什么 WMI 类来枚举驱动程序?Win32_PnPSignedDriver 有一个名为“IsSigned”的属性。

于 2010-10-23T16:09:44.007 回答