|
|
发表于 2011-4-28 18:26:26
|
显示全部楼层
本帖最后由 hanyeguxing 于 2011-4-28 18:29 编辑
19# ▄︻┻═┳一
对这些我不甚了解,但我怀疑你的信息来源,
cmd.exe 不同于一般的应用程序,windows的shell 是系统最后一个启动的一个进程。
f8-- 带命令行的安全模式 就证明了 cmd.exe 是独立于 explorer.exe
1,恰恰相反,cmd.exe 和一般应用程序没什么不同,都是一个32位GUI程序
2,至于:
因为explorer.exe是Windows默认的外壳
大多数程序都是它的子进程
也自然继承了它的环境空间
所以我们无论从开始》运行中启动cmd
还是直接点击运行cmd.exe或者批处理
都将会成为explorer.exe的子进程
也同时继承它的环境空间
这里说的是 cmd.exe 的一般启动方式,这和其他一般应用程序也一样。但不代表说程序就必须从外壳 explorer 上作为子进程启动, cmd 是这样,其他程序也是这样。
3,“f8-- 带命令行的安全模式 就证明了 cmd.exe 是独立于 explorer.exe”
任何程序,只要愿意,都可以独立于外壳而单独装载运行。打个比方,把外壳关闭了qq程序就进程结束了吗?把外壳关了在任务管理器中就不能启动其他应用程序了吗?
系统经过 Pre-Boot 阶段最后加载 NTLDR 文件,切换实模为保护、ntdetect.com 收集信息、加载内核 ntokrnl.exe 、加载 HAL ;然后 system 初始化内核、创建会话管理子系统;smss.exe 创建用户模式并初始最原始的环境、加载 Win32k.sys 、启动 Csrss.exe 与 Winlogon.exe 进程;Winlogon.exe 启动 Services.exe 进程、Lsass.exe 进程、Userinit.exe 进程;Userinit.exe 进行用户初始化后,然后启动 Explorer.exe ,也是 Userinit.exe 启动的带命令行的安全模式中的 cmd.exe ,最后 Userinit.exe 退出。
看明白环境这一过程中环境的继承了吗? |
|