2015-04-14 67 views
0

如何通過c#獲取Windows驅動程序文件的文件屬性或版本信息。 我使用這個代碼:在windows中獲取驅動程序文件版本

var version = File.GetAttributes(Environment.SystemDirectory + @"\drivers\acpi.sys"); 

但是這個代碼拋出異常:Could not find file 'C:\Windows\system32\drivers\acpi.sys'.。 然後,我在dir變量中使用此代碼var dir = Directory.GetFiles(Environment.SystemDirectory + @"\drivers");我有4個文件。如果我通過Windows資源管理器打開此文件夾,我在文件夾300+文件中。我究竟做錯了什麼?

+2

你不能在Windows 95了,有你的應用程序和系統之間有很多更多的事情。爲什麼你甚至想要閱讀'acpi.sys'的版本? – Luaan

+0

@Luaan這就是例子。我需要讀取另一個文件的信息。這個問題不僅適用於acpi.sys。 – EXTRAM

+1

你在說司機。你爲什麼要查詢驅動程序版本?你爲什麼試圖通過閱讀文件系統中的文件版本來做到這一點? – Luaan

回答

1

你應該使用> = FrameWork的.NET 4, 添加:

using System.Management; 

並添加參考System.Management;

 ManagementObjectSearcher searcher = 
         new ManagementObjectSearcher("root\\CIMV2", 
         "SELECT * FROM Win32_PnPSignedDriver"); 
     ManagementObjectCollection moc = searcher.Get(); 

     foreach (var manObj in moc) 
     { 
      Console.WriteLine("Device Name:" + manObj["FriendlyName"] + " \r\nDeviceID: " + manObj["DeviceID"] + "\r\nDriverDate: " + manObj["DriverDate"] + "\r\nDriverVersion: " + manObj["DriverVersion"] + "\r\nDriverName:" + manObj["DriverName"] +"\n\r======================================\n\n";); 
     } 

結果(部分):

enter image description here

+0

如何通過sys文件的名稱查詢驅動程序? – EXTRAM

+0

@EXTRAM不要。你仍然從完全錯誤的角度看待這個問題。物理'sys'文件只是一個沒有重要性的細節。取而代之的是設備ID,例如'ClassGuid'或USB供應商/設備對。 – Luaan

+0

'ManagementObjectSearcher'是一個緩慢的屁股疼痛,而是使用文件版本,如果它是正確的。 – Wobbles

相關問題