我试图弄清楚如何在 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# 编码。
帮助表示赞赏。