如何编写新的 Windows Shell 代码?

发布于 2024-08-21 20:38:44 字数 1435 浏览 11 评论 0 原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

GRAY°灰色天空 2024-08-28 20:38:44

作为 shell,您需要做的所有事情从未被记录下来,因此文件更改通知等存在一些问题。基础知识是:

  1. SystemParametersInfo(SPI_SETMINIMIZEDMETRICS,...MINIMIZEDMETRICS) with (undocumented?) flag 8
  2. 注册为 shell (SetShellWindow, SetProgmanWindow,ShellDDEInit,RegisterShellHook 等)
  3. 通过设置信号隐藏欢迎屏幕 ("msgina: ShellReadyEvent" 和 "ShellDesktopSwitchEvent")
  4. 启动注册表运行键、开始菜单\startup 和 ShellServiceObjects
  5. 设置注册表 Explorer\SessionInfo

好处是,你不是首先编写一个新的 shell,如果你环顾四周,你可以找到一些晦涩难懂的所需信息。以下是帮助您入门的列表:

Everything you need to do as shell has never been documented, so there are some issues with file change notifications etc. The basics are:

  1. SystemParametersInfo(SPI_SETMINIMIZEDMETRICS,...MINIMIZEDMETRICS) with (undocumented?) flag 8
  2. Register as the shell (SetShellWindow,SetProgmanWindow,ShellDDEInit,RegisterShellHook etc)
  3. Hide welcome screen by setting a signal ("msgina: ShellReadyEvent" and "ShellDesktopSwitchEvent")
  4. Start registry run key, start menu\startup and ShellServiceObjects
  5. Set registry Explorer\SessionInfo

The good thing is, you are not the first to write a new shell, if you look around, you can find some obscure required info. Here is a list to get you started:

沉鱼一梦 2024-08-28 20:38:44

一个好的起点是研究如何构建命令行解析器,它可以标记和解释输入。有一些工具可以帮助解决此问题,例如 ANTLR,或者您可能想尝试构建自己的工具。

解析完输入后,您需要决定采取哪些操作 - 启动进程、进程之间的管道、重定向输出 - 以及进行这些系统调用。

如果您只是想要一个更强大的 shell,而不是有兴趣构建一个,请提供 PowerShell 尝试一下。

A good place to start would be investigating how to build a command line parser, something that can tokenize and interpret the inputs. There are tools that can help with this like ANTLR, or you might like to try building your own.

Once you've parsed the inputs you need to decide what actions to take - launching processes, piping between processes, redirecting output - and making those system calls.

If you're just after a more powerful shell rather than interested in building one, give PowerShell a try.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文