visual tag símbolo studio sistema open linea for developer consola comandos abrir c# windows command-prompt

c# - tag - ¿Cómo sabe el símbolo del sistema cuándo esperar para salir?



tag c# (3)

Cuando inicia un nuevo proceso, una aplicación GUI en este contexto que realmente funciona fuera de los límites del mensaje, el aviso no esperará. Pero, si ejecuta un comando que funciona completamente bajo los límites de la instancia actual de un aviso, espera.

Por lo tanto, el Bloc de notepad comandos simplemente inicia la aplicación Bloc de notas y deja el control de la aplicación. Mientras, el comando ipconfig ejecuta bajo un dominio (no es el dominio de la aplicación ) del aviso.

Para generalizar en extremo, cuando utilice Process.Start en su equivalente de C #, no espere. De todos modos no lo hará.

Estaba tratando de hacer un código de comando de Windows volver a codificar en C #. Me preguntaba cómo el símbolo del sistema sabe cuándo esperar a que el proceso comience a salir, y cuándo no esperar que el proceso llamado salga.

Por ejemplo, si escribe en el símbolo del sistema "Bloc de notas", se iniciará el Notepad , pero aún puede ejecutar otros comandos. Sin embargo, si abre una utilidad como more.com, ping.exe u otra utilidad, esperará a que el programa en ejecución finalice antes de permitirse ejecutar otro comando.

¿Cómo sabe el símbolo del sistema cuándo esperar para salir, y cómo se puede emular este comportamiento en C #?


El valor predeterminado de un símbolo del sistema es generar el programa GUI en un proceso / fork separado. Sin embargo, puede ejecutar el Bloc de notas (u otro programa GUI) en línea con su símbolo del sistema / script de shell:

start /w notepad.exe

De esta forma, la secuencia de comandos / shell script solo continúa después de que el proceso notepad.exe haya finalizado.

Espero que esto ayude, TW


Si la aplicación es una aplicación Win32 GUI, solo se ejecutará y el símbolo del sistema no esperará a que salga.

Si la aplicación es una aplicación de consola, se ejecutará en el símbolo del sistema y deberá esperar a que termine para recuperar el símbolo del sistema.

EDITAR:

DE ACUERDO. Parece que necesitas una explicación técnica. Si desea emular la misma función en su aplicación, puede verificar IMAGE_OPTIONAL_HEADER de archivos EXE here .

Dentro de IMAGE_OPTIONAL_HEADER , hay:

WORD Subsystem;

If SubSystem == 0x02 significa que es una aplicación GUI.

If SubSystem == 0x03 significa que es una aplicación de símbolo del sistema.

EDICION 2:

Si quieres verlo en acción:

  1. Descargue http://www.ntcore.com/exsuite.php

  2. Copie calc.exe o notepad.exe a su escritorio

  3. Abrir calc.exe copiado en CFF Explorer

  4. Navega a encabezados Nt -> Encabezados opcionales

  5. Cambiar SubSystem de 0x002 a 0x003

  6. Guardarlo

Ahora ejecute el nuevo calc modificado y verá que el símbolo del sistema espera a que finalice.