web-dev-qa-db-ja.com

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

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

Task Manager Processes in the Process Explorer

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

13
Martin Braun

分析

どうやらそれは文書化された動作ではありません。私はいくつかのテストを行い、私の発見を記録しました:

  • タスクバーを右クリックして、タスクマネージャーを起動をクリックします。

    "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を入力または貼り付けて、 Enter; System32フォルダーに移動し、taskmgr.exe実行可能ファイルをダブルクリックします。システム構成ユーティリティ(msconfig.exe)を起動し、Toolsタブをクリックして、リストからタスクマネージャの項目を選択し、Launch

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

    taskmgr.exe
    

備考

  • Windows 8の開発段階からリリースプレビューまで、同様の方法で動作しました。 Windows Vista以前のオペレーティングシステムは影響を受けません。

  • 実行可能ファイルは、いくつかの [〜#〜] api [〜#〜] 関数(つまりGetCommandLineWおよびCommandLineToArgvW)をインポートし、コマンドラインを取得して解析します。引数。

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

経験に基づいた推測をする必要がある場合、数値パラメーターは内部の起動インジケーターであり、おそらくデバッグ目的で使用され、後に残されることを意図していたと思います。

13
and31415

いくつかのメモ:

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

例えば:

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

enter image description here

基本的なプログラミングの観点から、どのアプリケーションにも、引数canが渡されるある種のメインメソッドがあります。たとえば、基本的なWindowsフォームC#アプリケーションは次のようになります。

private void Form1_Load(object sender, EventArgs e)
        {

        }

面白い引数を渡しても、アプリケーションでは何も起こりませんが、Process Explorerはそれらをキャッチして表示します。

enter image description here

ただし、それらを明示的に処理することにした場合は、コマンドから操作が行われます。

enter image description here

そして、私がしなければならなかったのは、フォームのエントリポイントを少し変更することだけでした。

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

            this.Text = arguments;
        }

それでは、なぜそこにあるのかという質問に戻りましょう。

からtaskmgr.exeにアクセスした場合 ctrlaltdel メソッドでは、実際にコマンド引数「/ 3」が表示されます。また使うなら ctrlshiftesc これは/ 2を渡し、タスクバーを右クリックして[タスクマネージャの開始]をクリックすると、表示されるスイッチは/ 4になります。

これらすべてから、おそらくWindowsが知っておくべきことがあるか、おそらく私たちが知らないTaskmanagerのためにほぼ実装されていたのではないかと思います。たとえば、Windowsのセキュリティでは、 ctrlaltdel スクリプトやユーザーではなく、taskmgr.exeの呼び出しに使用されました。繰り返しますが、純粋な憶測ですが このようなスレッド は、少なくとも考えだったのではないかと思います。


悪名高いtl; drの場合

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

2
Austin T French