... Хоча, безумовно, є непідтримувані способи цього чи способи, що працюють за допомогою налагоджувача, нічого не підтримується для програмного доступу до командного рядка іншого процесу, принаймні нічого, що надається ядром. ...
Те, що немає, є наслідком принципу не відстежувати інформацію, яка вам не потрібна. Ядро не потребує отримання командного рядка іншого процесу. Він бере командний рядок, переданий CreateProcess
функції, і копіює її в адресний простір запущеного процесу, в місце, де GetCommandLine
функція може його отримати. Як тільки процес може отримати доступ до власного командного рядка, виконуються обов'язки ядра.
Оскільки командний рядок скопійовано в адресний простір процесу, процес може навіть записати в пам'ять, що містить командний рядок, і змінити його. Якщо це трапиться, тоді початковий командний рядок втрачається назавжди; єдину відому копію перезаписали.
Однак найімовірнішою причиною є просто те, що для такої установи є обмежені випадки використання.