Frage

Ich war über NTVDM.exe lesen, wie ich einen schnellen Test Konsole app bauen und es abgestürzt ist auf einem Freunde Maschine über dieses EXE beschweren.

Wie ich es alle DOS cmd Fenster (C # Konsolenanwendungen enthalten) verstehen laufen als 16bit nicht 32bit.

Ist das wahr? Bedeutet dies, alle meine Werke Konsole App Back-Office-Anwendungen als 16bit laufen, anstatt das Beste aus dem 32-Bit verfügbar?

Was ist Windows-Dienste? Wie ich glaube, dass wir es als eine Konsole app schrieben dann machte es als Windows-Dienst ausgeführt werden?

Danke

War es hilfreich?

Lösung

Jede .NET-Anwendung, die für x86 kompiliert wird 32-Bit

C # Konsolenanwendungen sind in "echten" dos laufen nicht - sie laufen in einer 32-Bit- oder 64-Bit-Umgebung -. Je nach Betriebssystem und .NET Framework

Andere Tipps

  

Wie ich es alle DOS cmd Fenster verstehen   (C # Konsolenanwendungen enthalten) als   16bit nicht 32bit.

     

Ist das wahr?

Nein, gar nicht.

Sie können laufen DOS-Anwendungen unter Windows, und sie sind 16-Bit, aber die Tatsache, dass sie ein bisschen konsolen aussehen ist so ziemlich nur Zufall.

Es gibt keine 16-Bit-.NET-Anwendungen, und ob eine Anwendung ist Konsolenmodus oder nicht macht keinen Unterschied, ob es 16 oder 32 Bit.

MS-DOS-Anwendungen wie 16-Bit-Anwendungen unter dem NTVDM ausgeführt werden.

„Windows-Konsole“ Anwendungen sind nicht DOS-Anwendungen, und führen Sie als native Windows-Prozess (wo ein Bit in den PE-Header der EXE-Datei, um sie als eine Konsole-Anwendung identifiziert, so dass Windows kann / erstellen prep eine Windows-Konsole für die Anwendung, wenn man nicht bereits vorhanden ist, zum Beispiel Ihrer Konsole-Anwendung von CMD oder Powershell ausgeführt wird das Konsolenfenster bereits erstellt, während Doppelklick auf die EXE-Datei im Explorer wieder verwenden wird ein neues Konsolenfenster für die Anwendung erstellen.)

CMD! = DOS

Windows-Konsole! = DOS

Ebenso gibt es eine vollständige Windows-Konsole API ist, die seit mindestens Windows 2000 (NT-5) vorhanden in Windows waren, wenn nicht früher (wenn auch wahrscheinlich NT3 / 4 nur.)

Eine .NET-Konsolenanwendung. (Oder jede andere .NET-app) laufen soll, wie alles, was Hardware gezielt es JIT'ed wird ist. Also für x86 wird es 32-Bit sein.

  

Wie ich es alle DOS cmd Fenster (C # Konsolenanwendungen enthalten) verstehen laufen als 16bit nicht 32bit.

Sie sind falsch. Alle cmd.exe Fenster sind 32 oder 64-Bit, abhängig von der Architektur.

DOS starb zusammen mit Windows ME fast vor einem Jahrzehnt.

Ich weiß nicht, über jede .NET-VM-Implementierung, die in 16-Bit-Modus laufen kann. Die Microsoft .NET-Laufzeit und Mono sind beide 32/64 Bits nur. Ich weiß nicht, über die anderen kleineren, aber ich wäre überrascht, wenn sie in 16-Bit-Modus arbeiten könnten.

Auch läuft cmd.exe in 32-Bit-Modus als cmd.exe eine 32-Bit-Windows-Anwendung ist. Auf der anderen Seite läuft command.com in 16-Bit-Modus.

Eigentlich sind, Konsolenanwendungen weit von Natur aus ist 16-Bit. Das ist einfach nicht wahr, es ist, bevor Windows nicht einmal wahr war, wie die x86-geschützter Modus 32 Bits, so ein Spiel oder eine Anwendung für DOS in portected Modus läuft, ist 32-Bit.

In .NET Ihre Art von UI (oder dem Fehlen von UI wie in Windows Services) wirkt sich nicht auf die Wortlänge der Anwendung. Standardmäßig sind die .NET-Binärdateien plattformunabhängig und als 32-Bit oder 64-Bit-Anwendung, die Art von .NET Framework ausgeführt werden sollen abhängig, Kernel usw. der Host-Maschine. Obwohl sie auch direkt auf 64-Bit kompiliert werden können.

Es gibt nichts Besonderes an einer Konsole exe; es ist nur eine PE-Datei. Also unabhängig von Konsole vs winform exe vs Windows-Dienst, wird es nur in gehen zu laufen, was auch immer Modus kompiliert wurde.

Visual Studio etc. wird nie eine 16-Bit-exe erzeugen. x86 vs x64 ist interessanter ;-p

Wahrscheinlich, dein Freund nicht über das .NET Framework installiert ist (oder hat nur 1.1).

Auch unter DOS ".EXE" 16-Bit- oder 32-Bit sein könnte (mit entsprechender Codierung oder DOS-Extender-Bibliothek).

NTVDM.EXE ist der DOS-Emulator, die 16-Bit-.COM und .EXE Dateien in einer Umgebung unterstützt die Ausführung von wo sie die CPU 16-Bit annehmen können und dass DOS-Systemaufrufe zur Verfügung stehen. Seine einzige Verbindung mit Eingabeaufforderungen ist, dass Text-Modus-DOS-Programme das Konsolenfenster verwenden, um die Emulation eines VGA-Bildschirm im Textmodus zu liefern.

Wie bereits erwähnt, gibt es keine .NET-VM zur Verfügung, die unter DOS ausgeführt werden kann. Aber es könnte Spaß aus den Mono-Projekt Quellen zu starten und eine bauen, die unter FreeDOS laufen ... nur Ihre Freunde zu erschrecken; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top