我正在嘗試在虛擬機器中運行一個程序,該程序嘗試使用以下查詢透過 Windows WMI 獲取我的顯示資訊:
var success = true;
List<Display> displays = new List<Display>();
// Query WmiMonitorBasicDisplayParams to retrieve display parameters
using (var searcher = new ManagementObjectSearcher(@"Root\WMI", "SELECT * FROM
WmiMonitorBasicDisplayParams"))
using (var results = searcher.Get())
由於某種原因,Windows WMI 無法獲取我的虛擬顯示器的顯示信息,並且程式崩潰並拋出此異常:
Unhandled exception. System.Management.ManagementException: Not supported
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
每個虛擬機器中都會發生這種情況,且顯示器始終被歸類為非 PnP 裝置。
那麼如何模擬真實的內部顯示器呢? (如筆記型電腦顯示器)以便 Windows WMI 不會使程式崩潰?否則有沒有辦法攔截並修改WMI查詢的結果,然後將其傳回給程式c#程式碼?
答案1
虛擬機器應用程式(VMware、Virtual Box、Hyper-V)創建虛擬硬體(而非真實硬體)供來賓電腦使用。
那麼如何模擬真實的內部顯示器呢? (如筆記型電腦顯示器)以便 Windows WMI 不會使程式崩潰?否則有沒有辦法攔截並修改WMI查詢的結果,然後將其傳回給程式c#程式碼?
你不能(根據我的第一條評論)。您嘗試執行的操作無法在虛擬機器中執行。
我同時使用 VMware 和 Hyper-V
您需要一台真實的(實體)機器來運行和測試您的程式。