Windows как эмулировать внутренний дисплей на виртуальной машине

Windows как эмулировать внутренний дисплей на виртуальной машине

Я пытаюсь запустить программу на виртуальной машине. Эта программа пытается получить информацию о моем дисплее через 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.

Для запуска и тестирования вашей программы вам понадобится реальная (физическая) машина.

Связанный контент