Несколько заметок:
То, что команда отправлена, не означает, что программа принимает эти аргументы или любые другие.
Например:
Я вызвал 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;
}
Теперь вернемся к вашему вопросу о том, почему это так:
Если вы обращаетесь к taskmgr.exe из метода ctrl + alt + del , вы действительно видите аргумент команды "/3". Также, если вы используете ctrl + shift + esc, он передает /2, и если вы щелкнете правой кнопкой мыши на панели задач и нажмете "Запустить диспетчер задач", показанный переключатель будет /4.
Все это заставляет меня предположить, что, возможно, Windows что-то нужно знать, или, возможно, она была почти реализована для диспетчера задач, о котором мы не знаем. Например, для безопасности в Windows может потребоваться узнать, использовался ли ctrl + alt + del для вызова taskmgr.exe, а не сценария или пользователя. Опять же, чистые спекуляции, но подобные темы заставляют меня думать, что это могла быть хотя бы мысль.
Для печально известного TL; Dr
Чтобы знать, почему Windows передает эти команды, нам, вероятно, нужен либо член команды разработчиков Microsoft, либо исходный код. Там не может быть лучшего ответа.