Archive for Juni 2016

Deutsche Tastaturbelegung bei 16-Bit Programmen unter Windows 10

7 Juni 2016

Noch ein kleiner Nachschlag zum vorherigen Blogeintrag https://newyear2006.wordpress.com/2016/06/06/16-bit-komponenten-unter-windows-10-und-fehlermeldung-ntvdm-angeschlossenes-gert-funktioniert-nicht/. Wer so 16-Bit Programme verwendet, der wird sich wundern wo die Umlaute geblieben sind. Man kann das Problem ganz einfach nachstellen:

Macht man eine Eingabeaufforderung auf, dann handelt es sich um eine 32-Bit Eingabeaufforderung, hier sind die Umlaute noch verfügbar. Gibt man nun COMMAND ein, wird die eigentliche 16-Bit Umgebung geladen, sind auf einmal die Umlaute weg. Selbiges passiert auch beim direkten Laden von 16-Bit Programmen über Verknüpfung oder Namenseingabe.

Microsoft Windows [Version 10.0.10586]
(c) 2015 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\Benutzer>öäß
Der Befehl "öäß" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\Benutzer>command
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.

C:\USERS\BENUTZER>;‘-

Dieser Artikel ist zwar alt aber hat auch bei Windows 10 immer noch Gültigkeit https://newyear2006.wordpress.com/2006/09/18/deutsche-tastaturbelegung-fur-16bit-dos-programme-unter-vista-rc1/. D. h. man aktiviert durch einfügen von

LH KB16 GR,,%SystemRoot%\system32\keyboard.sys

in der C:\Windows\System32\AUTOEXEC.NT Datei die deutsche Tastaturunterstützung. Nun muss das Programm oder die Eingabeaufforderung nur nochmal neu gestartet werden, dann ist alles gut.

Noch ein Hinweis: Nicht wundern, wenn man diesen Schritt immer wieder nach jedem größeren Windowsupgrade machen muss, da das Gesamtsystem durch z. B. das kommende Anniversary Update immer wieder zurückgesetzt wird!

Advertisements

16-Bit Komponenten unter Windows 10 und Fehlermeldung NTVDM angeschlossenes Gerät funktioniert nicht

6 Juni 2016

Da nun immer mehr Rechner auf Windows 10 umgestellt werden, wo davor kein Bedarf war, kommt es auch zu dem einen oder anderen Aha-Erlebnis. Eigentlich klappt der Umstieg ganz gut. Wer aber auf eine 32-Bit Windows 10 Version umgestiegen ist und noch 16-Bit DOS- oder Windowsprogramme benutzt, der könnte ganz schnell ins Fluchen geraten.

Hier bin ich schon früher auf das Thema NTVDM und 16-Bit-Programme unter Windows 8 eingegangen: https://newyear2006.wordpress.com/2013/09/15/16-bit-programme-unter-windows-8-es-muss-zuerst-die-16-bit-anwendungsuntersttzung-aktiviert-werden/, hier für Windows 8.1: https://newyear2006.wordpress.com/2013/09/15/nochmal-zum-thema-16-bit-programme-unter-windows-8-1-32-bit-und-wie-verhlt-es-sich-mit-fondue-exe-und-den-legacykomponenten/.

Dieser Dialog ist auch unter Windows 10 verfügbar die Installation der Legacyfeatures funktioniert genauso wie bei 8 und 8.1 beschrieben.

Allerdings laufen unter Windows 10 die meisten 16-Bit-Programme immer noch nicht!! Warum? Weil Microsoft eine zusätzliche Hürde für 16-Bit-Programme eingebaut hat. Es handelt sich dabei um die neue Konsole mit den erweiterten Copy&Paste-Eigenschaften über die Tastatur. Diese sorgt dafür, dass wenn ein altes 16-Bit-Programm mit installierter Legacy-Komponente aufgerufen wird diese Fehlermeldung erscheint:

image

Hier nochmal die reine Textform für die Suchmaschinen:

—————————
16 bit MS-DOS Subsystem
—————————
Eingabeaufforderung – Anwendung
NTVDM has encountered a System Error
Ein an das System angeschlossenes Gerät funktioniert nicht.

Choose ‚Close‘ to terminate the application.
—————————
Schließen   Ignorieren  
—————————

Was tun? Die Ereignisanzeige protokolliert auch nur brav mit, dass ein Problem auftrat:

PS C:\> Get-EventLog -LogName System -Source "Application Popup" -InstanceId 26 | select -First 1 | fl *

EventID            : 26
MachineName        : MeinRechnerName
Data               : {}
Index              : 945
Category           : (0)
CategoryNumber     : 0
EntryType          : Information
Message            : CriticalAppShutdownCleanupTimeout
Source             : Application Popup
ReplacementStrings : {16 bit MS-DOS Subsystem, Eingabeaufforderung – Anwendung                     NTVDM has encountered a System Error                      Ein an das System angeschlossenes Gerät funktioniert nicht.                       Choose ‚Close‘ to terminate the application.}
InstanceId         : 26
TimeGenerated      : 06.06.2016 15:15:47
TimeWritten        : 06.06.2016 15:15:47
UserName           : NT-AUTORITÄT\SYSTEM
Site               :
Container          :

Wenn man googlet, dann könnte man über diesen Thread http://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_update/16-bits-applications-not-working-at-all/a776a720-ff62-4848-96b1-81b4371cff2c?page=3 stolpern und hier hat MarcelloCapozzi den richtigen Vorschlag:

Einfach die “Legacy Console” aktivieren!

Merke: Nicht nur die Legacy Komponente muss installiert werden, sondern ab Windows 10 auch noch bei den Einstellungen die Legacy Console!

image

Dazu muss man also bei den Eingabeaufforderung oder Programmverknüpfungseigenschaften auf das Register Optionen gehen. Der Hinweis “erfordert Neustart” bezieht sich nicht auf den Rechner sondern auf das jeweilige Programm, bzw. die Eingabeaufforderung.

Wer die Sache skripten muss, der kann sich um HKEY_CURRENT_USER\Console bemühen und dort speziell den Eintrag ForceV2, dieser steuert das Verhalten ob Legacy aktiviert ist oder nicht. Leider fehlt mir gerade die Zeit dies weiter auszuführen. Hier gibt es weitere Infos: https://technet.microsoft.com/en-us/library/mt427362.aspx.

Hardware direkt einer virtuellen Maschine im Hyper-V mittels Discrete Device Assignment zuordnen

3 Juni 2016

Microsoft experimentiert viel mit dem Hyper-V und baut ihn in alle Richtungen aus. So gab es ganz zu Beginn von Windows 10 Powershell Cmdlets, welche es erlaubten physische Hardware direkt einer virtuellen Maschine zuzuordnen https://charbelnemnom.com/2015/02/whats-new-in-powershell-for-hyper-v-in-windows-server-technical-preview-hyperv-powershell-vnext/. Dazu gab es die Cmdlets:

Get-Command *assigna*

Name                            Version Source
—-                            ——- ——
Add-VMAssignableDevice          2.0.0.0 Hyper-V
Add-VMHostAssignableDevice      2.0.0.0 Hyper-V
Dismount-VMHostAssignableDevice 2.0.0.0 Hyper-V
Get-VMAssignableDevice          2.0.0.0 Hyper-V
Get-VMHostAssignableDevice      2.0.0.0 Hyper-V
Mount-VMHostAssignableDevice    2.0.0.0 Hyper-V
Remove-VMAssignableDevice       2.0.0.0 Hyper-V
Remove-VMHostAssignableDevice   2.0.0.0 Hyper-V

Allerdings verschwanden diese Cmdlets wieder zum Release von Windows 10, weshalb sie bei diesem Vergleich nicht auftauchten: https://newyear2006.wordpress.com/2015/07/30/umgang-mit-verschiedenen-versionen-von-powershellmodulen-und-ermittlung-von-unterschieden/.

Per Zufall stolperte ich aber über diesen Blogeintrag https://techstronghold.com/blogs/virtualization/pass-through-wired-or-wireless-wi-fi-nic-to-vm-using-hyper-v-discrete-device-assignment-dda-in-windows-server-2016, der komische Dinge vollführte. Tatsächlich hat Microsoft obige Cmdlets mit Release von v1511 bei Windows 10 wieder eingeführt! Wobei die Dokumentation, stand heute, also ein halbes Jahr nach Erscheinen von v1511, absolut erbärmlich ist. Z. B. besteht die Dokumentation von Add-VMAssignableDevice nur aus einem Template. Keine Erklärung nix.

Nun ist das Thema an sich auch recht komplex, aber man könnte ja zumindest ein paar Links für weitergehende Informationen hinterlegen. So muss man sich alles selber ergooglen.

Im Prinzip geht es um Discrete Device Assignment, kurz DDA, auch bekannt als PCI Passthrough. Dies erlaubt einer VM den direkten Zugriff auf Hardware.

Hier findet man einen Hintergrundartikel dazu: https://blogs.technet.microsoft.com/virtualization/2015/11/19/discrete-device-assignment-description-and-background/. Obwohl die Cmdlets unter Windows 10 verfügbar sind, scheint nur unter Windows Server 2016 die Unterstützung aktiviert zu sein! Dies wird in diesem Artikel geschrieben: https://blogs.technet.microsoft.com/virtualization/2015/11/20/discrete-device-assignment-machines-and-devices/.

Selbst wenn man mit dem Server 2016 unterwegs ist, muss die Hardware DDA unterstützen, ein Script welches die Hardware daraufhin überprüft, ist hier zu finden: https://github.com/Microsoft/Virtualization-Documentation/blob/master/hyperv-tools/DiscreteDeviceAssignment/SurveyDDA.ps1.