taskmgr.exeはWindows 7によって引数付きで呼び出されます


13

Ctrl+ Alt+ を押してDel[タスクマネージャー]をクリックすると、Windowsがtaskmgr.exe /3コマンドとして呼び出します。いくつかのWebサイトでは、タスクマネージャーにコマンドライン引数がないと主張しています。

プロセスエクスプローラーのタスクマネージャープロセス

Windowsがこの引数を付加するのはなぜですか?


さらに、Google検索、その存在の目的、一般的に何が良いのかにも基づいて、私が理解できなかったためにさらに混乱させる別のより低い重みLaunchTM.exe%windir%\System32あります。

@ Chinggis6 LaunchTM.exeWindows 7にはない、あなたはWindows 8にいると思う。ここでスーパーユーザーにこれに関する新しい質問を作成してみませんか?;)
マーティンブラウン

回答:


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+ R、入力するか貼り付けtaskmgr.exeテキストボックスに、キーを押しEnterSystem32フォルダーに移動し、taskmgr.exe実行可能ファイルをダブルクリックします。システム構成ユーティリティ(msconfig.exe)を起動し、[ ツール ]タブをクリックして、リストから[タスクマネージャー]項目を選択し、[ 起動 ]をクリックします。

    "C:\Windows\system32\taskmgr.exe"
    
  • コマンドプロンプトを開き、を入力するか貼り付けてtaskmgr.exe、を押しEnterます。

    taskmgr.exe
    

備考

  • リリースプレビューまで、Windows 8の開発段階でも同様に機能していました。Windows Vistaおよびそれ以前のオペレーティングシステムは影響を受けません。

  • 実行可能ファイルは、コマンドライン引数の取得と解析に使用されるいくつかのAPI関数(GetCommandLineWおよびCommandLineToArgvW)をインポートします。

  • 上記の引数のいずれかを使用してプログラムを手動で開始しても、目立った効果はないようです。

経験に基づいた推測をしなければならなかった場合、数値パラメータは内部の起動インジケータであり、おそらくデバッグ目的で使用され、その後残されたものであると言えます。


5
"taskmgr / 7 / startup" =>前にある[スタートアップ]タブから開始します!(Windows 8.1)-しかし、「taskmgr / startup / 7」も「taskmgr / startup」もそれを行いません!(追加のクレジット:この証拠を与えられた
taskmgr.exe

1
@davidbak taskmgr /anything /startupは、/startup2番目の引数として機能します。
ミシェルドルイター

@MicheldeRuiter-はい。引数を任意の順序で許可するためにそれらを殺したでしょうか?QAで余分な作業が発生しましたか?出荷日が遅れましたか?え?
-davidbak

2

いくつかのメモ:

コマンドが送信されたからといって、プログラムがこれらの引数を受け入れるという意味ではありません。

例えば:

私は自分の奇妙なコマンドでタスクマネージャーを呼び出しましたが、行動は変わりませんでした:

ここに画像の説明を入力してください

基本的なプログラミングの観点から、すべてのアプリケーションには、引数渡すことできる何らかのメインメソッドがあります。たとえば、基本的なWindowsフォーム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が知っておく必要のあること、またはわからないタスクマネージャー用に実装された可能性があると推測することになります。たとえば、Windowsのセキュリティでは、スクリプトやユーザーではなくtaskmgr.exeの呼び出しにctrl+ alt+ delが使用されたかどうかを知りたい場合があります。繰り返しになりますが、純粋な推測ですが、このようなスレッドは、少なくともそれが考えられたのではないかと思います。


悪名高いtl; dr

Windowsがこれらのコマンドを渡す理由を知るには、Microsoftの開発チームのメンバーか、ソースコードが必要です。より良い答えはないかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.