Windows的shell到底是个啥?

六道佩恩 2020-06-01 03:23:05
WH_SHELL类型的钩子,是有关shell程序的,可我没弄懂shell程序到底是个啥?

我本来是认为,shell是个解释器,shell程序应该只是在shell可调用的普通程序,但查询的结果楞是没看懂。。。
...全文
963 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
win+R 输入cmd 回车
  • 打赏
  • 举报
回复
引用 24 楼 六道佩恩 的回复:
[quote=引用 23 楼 早打大打打核战争 的回复:]
shell是操作系统提供给用户直接使用操作系统功能而不需要编程(也可以支持简单编程,比如批处理、cshell之类的)的若干程序,可以是命令行接口,比如Dos的command.com、Windows的cmd.exe也可以是GUI,比如Windows的explorer.exe。shell也是调用操作系统API实现功能的,广义来说可以归入应用程序一类

对于Windows的explorer.exe这种,是通过函数接口调用的(通用对话框函数?),还是说通过解释器做的进程通信?[/quote]

主要是COM接口
六道佩恩 2020-06-07
  • 打赏
  • 举报
回复
引用 23 楼 早打大打打核战争 的回复:
shell是操作系统提供给用户直接使用操作系统功能而不需要编程(也可以支持简单编程,比如批处理、cshell之类的)的若干程序,可以是命令行接口,比如Dos的command.com、Windows的cmd.exe也可以是GUI,比如Windows的explorer.exe。shell也是调用操作系统API实现功能的,广义来说可以归入应用程序一类
对于Windows的explorer.exe这种,是通过函数接口调用的(通用对话框函数?),还是说通过解释器做的进程通信?
luj_1768 2020-06-07
  • 打赏
  • 举报
回复
解释器是指命令识别或者指令识别吧?界面的概念要复杂许多。
六道佩恩 2020-06-07
  • 打赏
  • 举报
回复
引用 20 楼 luj_1768 的回复:
shell 是用户调用系统功能和应用程序的接口。其调用权限的配设方案,是其核心设计。在界面下可以使用什么级别的功能,功能的控制方案和性能指标、以及可以占用的系统资源都由此决定。windows 的权限配设方案很复杂。但是,图形界面和命令行界面肯定使用的是完全不同的两套方案。
命令行应该是指解释器的方案吧? 图形界面的话,应该也可以用解释器吧,解释器只需要和对应功能的进程通信就可以了(可行否?) 这么看,光解释器这一种设计也都可以实现呀
luj_1768 2020-06-07
  • 打赏
  • 举报
回复
shell 是用户调用系统功能和应用程序的接口。其调用权限的配设方案,是其核心设计。在界面下可以使用什么级别的功能,功能的控制方案和性能指标、以及可以占用的系统资源都由此决定。windows 的权限配设方案很复杂。但是,图形界面和命令行界面肯定使用的是完全不同的两套方案。
  • 打赏
  • 举报
回复
shell是操作系统提供给用户直接使用操作系统功能而不需要编程(也可以支持简单编程,比如批处理、cshell之类的)的若干程序,可以是命令行接口,比如Dos的command.com、Windows的cmd.exe也可以是GUI,比如Windows的explorer.exe。shell也是调用操作系统API实现功能的,广义来说可以归入应用程序一类
  • 打赏
  • 举报
回复
https://baike.baidu.com/item/shell/99702 感觉是个解释器
六道佩恩 2020-06-06
  • 打赏
  • 举报
回复
引用 17 楼 丁劲犇 的回复:
shell 我理解是指一个交互的方式,即通过ASCII的指令交互的方式。记得以前看到一个德国的车床,上面把telnet登录上去维护设备的那个小接口也叫做shell,里面支持ftp上传固件等几个很有限的命令。另外,玩过通信芯片的,估计都记得通过串口9600波特登上去写AT指令的那个界面,也是shell。 所以,shell 字面上就是外壳,在核心功能的外面包着shell,为了和外部的人交互。广义上,现代SOC都用网页了,那也是个shell,只是图形化了。
但是“外壳”的解释太宽泛了,我只是想知道它是 解释器 还是 解释器+函数接口 ,通过你的描述我分辨不出来,感觉那个小接口可以调用一个函数(函数接口),也可以去加载一个程序来运行(解释器),后面那个AT指令,一看就是解释器吧
  • 打赏
  • 举报
回复
shell 我理解是指一个交互的方式,即通过ASCII的指令交互的方式。记得以前看到一个德国的车床,上面把telnet登录上去维护设备的那个小接口也叫做shell,里面支持ftp上传固件等几个很有限的命令。另外,玩过通信芯片的,估计都记得通过串口9600波特登上去写AT指令的那个界面,也是shell。

所以,shell 字面上就是外壳,在核心功能的外面包着shell,为了和外部的人交互。广义上,现代SOC都用网页了,那也是个shell,只是图形化了。

xuzuning 2020-06-04
  • 打赏
  • 举报
回复
windows是消息驱动学系统,除了硬件中断,并没有去监听什么
luj_1768 2020-06-04
  • 打赏
  • 举报
回复
windows 的命令行界面好像和图形界面是两个不同的系统,二者的运行权限方案是不同的。其他的区别不算重要,大多与兼容有关。
六道佩恩 2020-06-04
  • 打赏
  • 举报
回复
引用 14 楼 luj_1768 的回复:
windows 的命令行界面好像和图形界面是两个不同的系统,二者的运行权限方案是不同的。其他的区别不算重要,大多与兼容有关。
那么哪个才是windows的shell?还是说windows的shell在命令行和图形界面中各占一部分?在命令行中的话,shell应该是指解释器对吧?那么在图形界面中,是一套函数接口吗?
六道佩恩 2020-06-03
  • 打赏
  • 举报
回复
引用 10 楼 早打大打打核战争 的回复:
shell可以是命令行接口,也可以是GUI的
“可以是GUI”这句话的意思是?是指调用GUI程序,还是提供GUI的中转接口? 既然windows的shell也是解释器,那么运行的对象也都是可执行程序对吧?那么WH_SHELL钩子所监视的什么?所有程序的启动、退出以及关键事件? MSDN的windows shell那个我早就看了,但实在没搞懂他讲的是啥,而看WH_SHELL钩子的描述我也不确定它到底针对的是什么,监视的是什么消息,所以它监视的对象是我上一段所说的吗?
qybao 2020-06-03
  • 打赏
  • 举报
回复
引用 12 楼 六道佩恩 的回复:
“可以是GUI”这句话的意思是?是指调用GUI程序,还是提供GUI的中转接口?

既然windows的shell也是解释器,那么运行的对象也都是可执行程序对吧?那么WH_SHELL钩子所监视的什么?所有程序的启动、退出以及关键事件?

MSDN的windows shell那个我早就看了,但实在没搞懂他讲的是啥,而看WH_SHELL钩子的描述我也不确定它到底针对的是什么,监视的是什么消息,所以它监视的对象是我上一段所说的吗?

WH_SHELL钩子时监是SHELL的消息

WH_SHELL
Installs a hook procedure that receives notifications useful to shell applications. For more information, see the ShellProc hook procedure.

ShellProc
The ShellProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function. The function receives notifications of Shell events from the system.

有5种情况就触发SHELL消息
1. 只要有个top-level、unowned 窗口被产生、起作用、或是被摧毁;
2. 当Taskbar需要重画某个按钮;
3. 当系统需要显示关于Taskbar的一个程序的最小化形式;
4. 当目前的键盘布局状态改变;
5. 当使用者按Ctrl+Esc去执行Task Manager(或相同级别的程序)

不知道你所说的监视对象是指什么?


smwhotjay 2020-06-02
  • 打赏
  • 举报
回复

shell可以理解为一个控制台(终端)。
玩黑时,就是拿shell.拿站就是拿webshell. webshell往往是低级权限,还要提权。拿system
  • 打赏
  • 举报
回复
shell可以是命令行接口,也可以是GUI的
千梦一生 2020-06-02
  • 打赏
  • 举报
回复
引用 8 楼 千梦一生 的回复:
所以,shell,约等于接口?

或者就是?
千梦一生 2020-06-02
  • 打赏
  • 举报
回复
所以,shell,约等于接口?
Yofoo 2020-06-02
  • 打赏
  • 举报
回复
简单说是 包装一个系统, 包装后肯定需要提供接口让用户控制, windows是图形化, 所以多数控制是鼠标多, 键盘少 这个包装可以说是一个shell, 翻译可能为"外壳", windows的shell偏向图形化, linux的shell偏向命令方式 windows的cmd也是命令方式, 可以说是一个命令方式的shell, cmd有很多内置命令, 也有很多命令是通过调用exe实现
加载更多回复(6)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧