Ich versuche, ein Programm in einer virtuellen Maschine auszuführen. Dieses Programm versucht, meine Anzeigeinformationen über Windows WMI mit einer Abfrage abzurufen:
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())
aus irgendeinem Grund kann Windows WMI die Anzeigeinformationen meines virtuellen Displays nicht abrufen und das Programm stürzt ab und verursacht diese Ausnahme:
Unhandled exception. System.Management.ManagementException: Not supported
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
Dies geschieht in JEDER virtuellen Maschine und die Anzeige wird immer als KEIN PnP-Gerät klassifiziert.
Wie emuliere ich also ein echtes internes Display? (wie ein Laptop-Display), sodass Windows WMI das Programm nicht zum Absturz bringt? Gibt es sonst eine Möglichkeit, das Ergebnis einer WMI-Abfrage abzufangen und zu ändern und es dann an den C#-Code des Programms zurückzugeben?
Antwort1
Virtual Machine Apps (VMware, Virtual Box, Hyper-V) erstellen virtuelle Hardware (keine echte Hardware) zur Verwendung durch die Gastmaschinen.
Wie emuliere ich also ein echtes internes Display? (wie ein Laptop-Display), sodass Windows WMI das Programm nicht zum Absturz bringt? Gibt es sonst eine Möglichkeit, das Ergebnis einer WMI-Abfrage abzufangen und zu ändern und es dann an den C#-Code des Programms zurückzugeben?
Das können Sie nicht (wie in meinem ersten Kommentar). Was Sie versuchen, funktioniert in einer virtuellen Maschine nicht.
Ich verwende sowohl VMware als auch Hyper-V
Sie benötigen eine echte (physische) Maschine, um Ihr Programm auszuführen und zu testen.