【问题标题】:Windows hardware / device driver report / inventoryWindows 硬件/设备驱动程序报告/清单
【发布时间】:2011-04-29 12:47:08
【问题描述】:

我正在尝试弄清楚如何在 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# 编写代码。

感谢您的帮助。

【问题讨论】:

    标签: c# hardware wmi device-driver inventory


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我知道这个类和属性。我尝试并且仍在尝试找到一种方法来枚举所有驱动程序,例如 DevCon dp_enum 和 SigVerif.exe 和 Verifier.exe - 所有这些都在一个代码/解决方案中。而且我仍在尝试寻找有关此的信息..
    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2021-10-14
    • 2023-04-01
    • 2011-08-17
    • 2013-02-01
    相关资源
    最近更新 更多