Windows 7使用参数调用taskmgr.exe


13

当我按Ctrl+ Alt+ Del并单击“任务管理器”时,我注意到Windows将taskmgr.exe /3作为命令进行调用。几个网站声称任务管理器没有命令行参数。

流程管理器中的任务管理器流程

Windows为什么附加此参数?


此外,还有另一个较小的权重LaunchTM.exe%windir%\System32这也使我无法弄清它变得更加混乱,这也基于我的Google搜索,它的存在目的以及它的总体优点。

@ Chinggis6 LaunchTM.exe我认为Windows 7中没有Windows 8。为什么不在超级用户上对此提出新的问题呢?;)
Martin Braun

Answers:


13

分析

显然,这不是有记录的行为。我做了一些测试,并注意到了我的发现:

  • 右键单击任务栏,然后单击启动任务管理器

    "C:\Windows\system32\taskmgr.exe" /4
    
  • Ctrl+ Shift+ Esc

    taskmgr.exe /2
    
  • Ctrl+ Alt+ Del,然后单击启动任务管理器

    taskmgr.exe /3
    
  • 启动一个非高架任务管理器,然后单击“ 显示所有用户的进程”按钮。

    "C:\Windows\system32\taskmgr.exe" /1
    
  • taskmgr.exe在开始菜单搜索栏中键入或粘贴,然后按Enter;按Win+ Rtaskmgr.exe在文本框中键入或粘贴,然后按Enter;导航到该System32文件夹并双击taskmgr.exe可执行文件;启动系统配置实用程序(msconfig.exe),单击“ 工具”选项卡,从列表中选择“任务管理器”项,然后单击“ 启动”

    "C:\Windows\system32\taskmgr.exe"
    
  • 打开命令提示符,键入或粘贴taskmgr.exe,然后按Enter

    taskmgr.exe
    

备注

  • 在Windows 8的开发阶段,直到Release Preview之前,事情以类似的方式工作。Windows Vista和更早的操作系统不受影响。

  • 该可执行文件导入了两个API函数(即GetCommandLineWCommandLineToArgvW),这些函数用于检索和解析命令行参数。

  • 使用上面的任何参数手动启动程序似乎没有任何明显的效果。

如果必须做出有根据的猜测,我会说数值参数是一个内部启动指示器,可能用于调试目的,然后被抛在后面。


5
“ taskmgr / 7 / startup” =>从前面的“启动”选项卡开始!(Windows 8.1)-但是“ taskmgr / startup / 7”和“ taskmgr / startup”都没有做到这一点!(额外的功劳:鉴于此证据,请解释taskmgr.exe的命令行解析算法...)
davidbak

1
@davidbak taskmgr /anything /startup起作用,因此/startup作为第二个参数。
米歇尔·德·瑞特

@MicheldeRuiter-是的 它会杀死他们以任何顺序允许争论吗?在质量检查方面造成了额外的工作?推迟发货日期?嗯???
davidbak

2

一些注意事项:

仅发送命令并不意味着程序接受这些参数或任何参数。

例如:

我用自己的奇数命令给taskmanager打电话,行为没有改变:

在此处输入图片说明

从基本的编程角度来看,任何应用程序都将具有某种可以传递参数的main方法。例如,一个基本的Windows Form C#应用程序如下所示:

private void Form1_Load(object sender, EventArgs e)
        {

        }

如果传入一些有趣的参数,应用程序将不会发生任何事情,但是Process Explorer将捕获并显示它们。

在此处输入图片说明

但是,如果我明确决定处理它们,您将从命令中获得交互。

在此处输入图片说明

我要做的就是稍微更改表单的入口点:

private void Form1_Load(object sender, EventArgs e)
        {
            string arguments = Environment.GetCommandLineArgs()[1];

            this.Text = arguments;
        }

现在,回到关于为什么它存在的问题:

如果从ctrl+ alt+ del方法访问taskmgr.exe ,则确实会看到命令参数“ / 3”。同样,如果使用ctrl+ shift+,esc则传递/ 2,并且如果右键单击任务栏并单击“启动任务管理器”,则显示的开关为/ 4。

所有这些使我假设Windows可能需要了解一些知识,或者几乎是为我们不知道的Taskmanager实现的。例如,Windows中的安全性可能想知道是否使用ctrl+ alt+ del来调用taskmgr.exe,而不是脚本或用户。同样,纯粹的猜测,但是像这样的线索使我认为这至少是一个想法。


对于臭名昭著的tl; dr

要知道Windows为什么要传递这些命令,我​​们可能需要Microsoft开发团队的成员或源代码。可能没有更好的答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.