Letztens hatte ich wieder ein Problem, das ich als erledigt geglaubt hatte: Ich brauchte einen USB Stick, der in der Lage war, DOS zu starten. Disketten sind ja nicht mehr wirklich angesagt – weniger, weil sie nicht mehr überall herumliegen, sondern eher weil die passenden Laufwerke seltene und von den seltenen Besitzern gut gehütete Exemplare sind. Nebenbei bemerkt: sie sind inzwischen auch etwas klein, was das verfügbare Speichervolumen betriff.

Nun kann Windows 7 zwar immer noch “DOS Startdisketten” formatieren, nur braucht das eine richtige Diskette und keinen USB Stick. Außerdem laufen manche Tools unter Windows 7 nur, wenn man ihnen per Kompatibilitäts-einstellungen vorgaukelt unter irgendeinem älteren, noch unterstützten, Betriebssystem zu laufen.

Also dachte ich mir, ich bin mal schlau und nehme eine virtuelle Maschine…

Virtuelle Maschinen haben ja den Vorteil typische Speichermedien per Abbilddatei einbinden zu können. Festplatten sind dann VHDs, DC/DVD entsprechend ISOs und Disketten VFDs. Also mal eben den Virtuellen XP Modus gestartet und – siehe da, es gibt ein Diskettenlaufwerk! Dummerweise gibt es nirgends die Option dieses Laufwerk irgendwie mit Inhalt zu füttern – zumindest nicht per GUI.

Wer jetzt mit der Syntax der schon länger verwendeten XML basierten VMC Dateien “per Du” ist, öffnet die schnell mal in Notepad und schreibt die richtige Konfiguration da herein. Hab ich aber bisher nie gemacht… Windows Virtual PC zu deinstallieren um den “alten” Virtual PC 2007 zu verwenden empfand ich jetzt nicht als sinnvolle Option. Da die Einstellungen aber noch existierten, muss es eine Schnittstelle geben – dachte ich mir. Und: Recht hatte ich. Auf MSDN steht alles, was man wissen muss. Nur: MSDN heißt programmieren! Also entweder ein paar gezielte VB Skripte schreiben oder aber etwas mehr Aufwand treiben und eine GUI drum herum bauen. Wofür gibt es schließlich die langen dunklen Winterabende, wenn man keinen Kaminofen hat?

Überrascht haben mich dabei ein paar Punkte: Die API zu Windows Virtual PC ist eine COM API. .NET geht daher über die Interop Schnittstelle, die zum Glück inzwischen “automatisch” funktioniert. Dementsprechend findet man die Beschreibung in der MSDN Library auch unter “Win32 and COM Development” und dort unter “Virtualization” neben der Beschreibung des Virtual Server. Am meisten überrascht war ich aber, dass die Code Beispiele im Blog in C(++) formuliert waren und nicht etwa in der Breitensprache Visual Basic oder aber moderner in CSharp.