12

Я заметил, когда я нажимаю Ctrl+Alt+Del и нажимаю Диспетчер задач, Windows вызывает taskmgr.exe /3 в качестве команды. Некоторые веб-сайты утверждают, что диспетчер задач не имеет аргументов командной строки.

Диспетчер задач Процессы в проводнике процессов

Почему Windows присоединяет этот аргумент?

2 ответа2

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 в строку поиска меню «Пуск» и нажмите клавишу « Ввод» ; нажмите Win+R, введите или вставьте taskmgr.exe в текстовое поле и нажмите Enter ; перейдите в папку System32 и дважды щелкните исполняемый файл taskmgr.exe ; запустите утилиту настройки системы (msconfig.exe), перейдите на вкладку « Инструменты », выберите в списке пункт «Диспетчер задач» и нажмите « Запустить».

    "C:\Windows\system32\taskmgr.exe"
    
  • Откройте командную строку, введите или вставьте taskmgr.exe и нажмите Enter.

    taskmgr.exe
    

замечания

  • Аналогичным образом все работало на этапе разработки Windows 8 вплоть до выпуска Release Preview. Windows Vista и более ранние операционные системы не подвержены изменениям.

  • Исполняемый файл импортирует несколько функций API (а именно GetCommandLineW и CommandLineToArgvW), которые используются для получения и анализа аргументов командной строки.

  • Ручной запуск программы с использованием любого из приведенных выше аргументов, кажется, не имеет заметного эффекта.

Если бы мне пришлось сделать обоснованное предположение, я бы сказал, что числовой параметр должен был быть внутренним индикатором запуска, возможно, использовался для целей отладки и затем оставлялся позади.

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;
        }

Теперь вернемся к вашему вопросу о том, почему это так:

Если вы обращаетесь к taskmgr.exe из метода ctrl + alt + del , вы действительно видите аргумент команды "/3". Также, если вы используете ctrl + shift + esc, он передает /2, и если вы щелкнете правой кнопкой мыши на панели задач и нажмете "Запустить диспетчер задач", показанный переключатель будет /4.

Все это заставляет меня предположить, что, возможно, Windows что-то нужно знать, или, возможно, она была почти реализована для диспетчера задач, о котором мы не знаем. Например, для безопасности в Windows может потребоваться узнать, использовался ли ctrl + alt + del для вызова taskmgr.exe, а не сценария или пользователя. Опять же, чистые спекуляции, но подобные темы заставляют меня думать, что это могла быть хотя бы мысль.


Для печально известного TL; Dr

Чтобы знать, почему Windows передает эти команды, нам, вероятно, нужен либо член команды разработчиков Microsoft, либо исходный код. Там не может быть лучшего ответа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .