... Хотя, безусловно, существуют неподдерживаемые способы сделать это или способы, которые работают с помощью отладчика, нет ничего, что поддерживается для программного доступа к командной строке другого процесса, по крайней мере, ничего не предусмотрено ядром. ...
То, что нет, является следствием принципа отказа от отслеживания информации, которая вам не нужна. Ядру нет необходимости получать командную строку другого процесса. Он берет командную строку, переданную CreateProcess
функции, и копирует ее в адресное пространство запускаемого процесса в место, откуда GetCommandLine
функция может ее получить. Как только процесс получает доступ к собственной командной строке, все обязанности ядра выполняются.
Поскольку командная строка копируется в адресное пространство процесса, процесс может даже записывать в память, содержащую командную строку, и изменять ее. Если это произойдет, исходная командная строка будет потеряна навсегда; единственная известная копия была перезаписана.
Однако наиболее вероятная причина просто в том, что существует ограниченное количество вариантов использования такого средства.