npo*_*aka 4 windows cmd batch-file
这是我执行的命令:
>cmd /k
>echo 1
1
>echo 2
2
>echo 3
3
>exit /b
>cmd /c "doskey /history"
echo 1
echo 2
echo 3
exit /b
>
Run Code Online (Sandbox Code Playgroud)
(在Windows 7x64上测试)根据进程资源管理器cmd /k启动子进程(不是线程).因此,在退出流程之后,我会期望它会从记忆中清除他的东西.这件事发生在3/4/..产生的cmds上for /f,带有被调用的批处理文件.
控制台窗口处理命令历史记录
命令提示符窗口的过程如下:
conhost.exe
--- doskey.exe
------ cmd.exe
---------任何子进程(在你的情况下cmd /k)
...如果退出然后从同一命令提示符窗口重新启动程序,则可以使用上一个程序会话中的命令历史记录.
您必须在启动程序之前运行Doskey.exe.即使程序具有shell命令,也无法从程序的命令提示符中使用doskey命令行选项.
Doskey在执行conhost.exe命令提示符窗口的进程下执行.这使它能够监视所有子进程和线程的击键.
从另一个进程中调用cmd时,根CMD进程会处理doskey历史记录
更新:
如MC ND评论,在Windows XP/2003/Vista/2008中,命令历史记录由处理csrss.exe.从Windows 7开始,conhost.exe处理命令历史记录 - 更多信息