taskmgr.exe викликається аргументом Windows 7


13

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

Процеси диспетчера завдань у Провіднику процесів

Чому Windows додає цей аргумент?


Крім того, є ще одна, менша вагова , LaunchTM.exeв %windir%\System32якому робить його ще більш заплутаною , оскільки я не міг зрозуміти, на основі мого пошуку Google, а його мета існування і то , що це добре для в цілому.

@ 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в текстове поле і натисніть Enter; перейдіть до System32папки та двічі клацніть 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" => починайте з вкладки Startup спереду! (Windows 8.1) - але ні "taskmgr / startup / 7", ні "taskmgr / startup" цього не роблять! (Додатковий кредит. Будь ласка, поясніть алгоритм розбору командного рядка taskmgr.exe, враховуючи ці докази ...)
davidbak

1
@davidbak taskmgr /anything /startupпрацює, /startupяк другий аргумент.
Мішель де Руйтер

@MicheldeRuiter - Так. Чи вбило б їх дозволити аргументи в будь-якому порядку? Викликали додаткову роботу в QA? Затримка дати доставки? HUH ????
davidbak

2

Кілька приміток:

Тільки тому, що команда надіслана, не означає, що програма приймає ці аргументи чи будь-які.

Наприклад:

Я зателефонував менеджеру завдань за допомогою своєї незвичайної команди, і поведінка не змінилася:

введіть тут опис зображення

З точки зору основної програми програмування, будь-яка програма має мати основний метод, який може передавати аргументи . Наприклад, базовий додаток 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 має знати, або, можливо, було майже реалізовано для Taskmanager, про який ми не знаємо. Наприклад, безпека в Windows може знати, чи використовувався ctrl+ alt+ delдля виклику taskmgr.exe, а не сценарій чи користувач. Знову-таки, чисті міркування, але такі теми змушують мене думати, що це могло бути хоча б думкою.


Для сумнозвісного тл; д-ра

Щоб знати, чому Windows передає ці команди, нам, ймовірно, потрібен або член команди розробників Microsoft, або вихідний код. Кращої відповіді може не бути.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.