押すと気づいた Ctrl+Alt+Del タスクマネージャーをクリックすると、Windowsはtaskmgr.exe /3
をコマンドとして呼び出します。いくつかのWebサイトは、タスクマネージャーにコマンドライン引数がないと主張しています。
Windowsがこの引数を付けるのはなぜですか?
どうやらそれは文書化された動作ではありません。私はいくつかのテストを行い、私の発見を記録しました:
タスクバーを右クリックして、タスクマネージャーを起動をクリックします。
"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
)をインポートし、コマンドラインを取得して解析します。引数。
上記の引数のいずれかを使用してプログラムを手動で開始しても、目立った影響はないようです。
経験に基づいた推測をする必要がある場合、数値パラメーターは内部の起動インジケーターであり、おそらくデバッグ目的で使用され、後に残されることを意図していたと思います。
いくつかのメモ:
コマンドが送信されたからといって、プログラムがそれらの引数などを受け入れるという意味ではありません。
例えば:
私は自分の奇妙なコマンドでタスクマネージャーを呼び出しましたが、行動は変わりませんでした:
基本的なプログラミングの観点から、どのアプリケーションにも、引数canが渡されるある種のメインメソッドがあります。たとえば、基本的な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;
}
それでは、なぜそこにあるのかという質問に戻りましょう。
からtaskmgr.exeにアクセスした場合 ctrl + alt + del メソッドでは、実際にコマンド引数「/ 3」が表示されます。また使うなら ctrl + shift + esc これは/ 2を渡し、タスクバーを右クリックして[タスクマネージャの開始]をクリックすると、表示されるスイッチは/ 4になります。
これらすべてから、おそらくWindowsが知っておくべきことがあるか、おそらく私たちが知らないTaskmanagerのためにほぼ実装されていたのではないかと思います。たとえば、Windowsのセキュリティでは、 ctrl + alt + del スクリプトやユーザーではなく、taskmgr.exeの呼び出しに使用されました。繰り返しますが、純粋な憶測ですが このようなスレッド は、少なくとも考えだったのではないかと思います。
悪名高いtl; drの場合
Windowsがこれらのコマンドを渡す理由を知るには、おそらくMicrosoftの開発チームのメンバーか、ソースコードが必要です。より良い答えはないかもしれません。