我试图用C#对Windows命令提示符进行重新编码。我想知道命令提示符如何知道何时等待进程开始退出,以及何时不等待调用的进程退出。
例如,如果您在命令提示符下键入“ notepad”,则记事本将启动,但是您仍然可以执行其他命令。但是,如果您打开诸如more.com,ping.exe或其他实用程序的实用程序,它将在等待执行程序完成之前让您执行另一个命令。
命令提示符如何知道何时等待退出,以及如何在C#中模拟此行为?
我试图用C#对Windows命令提示符进行重新编码。我想知道命令提示符如何知道何时等待进程开始退出,以及何时不等待调用的进程退出。
例如,如果您在命令提示符下键入“ notepad”,则记事本将启动,但是您仍然可以执行其他命令。但是,如果您打开诸如more.com,ping.exe或其他实用程序的实用程序,它将在等待执行程序完成之前让您执行另一个命令。
命令提示符如何知道何时等待退出,以及如何在C#中模拟此行为?
Answers:
如果该应用程序是Win32 GUI应用程序,它将仅运行并且命令提示符将不等待其退出。
如果该应用程序是控制台应用程序,它将在命令提示符下运行,并且您需要等待它完成以使命令提示符返回。
编辑:
好。看来您需要技术说明。如果要在应用程序中模拟相同功能,则可以在此处检查IMAGE_OPTIONAL_HEADER
EXE文件。
在内部IMAGE_OPTIONAL_HEADER
,有:
WORD Subsystem;
If SubSystem == 0x02
这意味着它是一个GUI应用程序。
If SubSystem == 0x03
这意味着它是一个命令提示符应用程序。
编辑2:
如果您想看到它的实际效果:
将calc.exe或notepad.exe复制到桌面
在CFF资源管理器中打开复制的calc.exe
导航到Nt标头->可选标头
将子系统从0x002更改为0x003
保存
现在运行新的修改后的calc,您将看到命令提示符等待其终止。