как эта программа имеет доступ ко всему графическому интерфейсу и данным экрана / кадрового буфера для рисования и изменения содержимого на нем.
Он использует вызовы API для управления графической подсистемой, которая использует драйверы для управления оборудованием видеоадаптера.
и почему другие программы не могут делать то, что делает
Они могут и делают. Explorer.exe не генерирует графику.
как меню «Пуск» и другие вещи, которые обычные программы, по-видимому, не могут коснуться?
Меню «Пуск» и панель задач ARE explorer.exe.
Я слышал, что это можно заменить,
Вы правильно слышали, это заменимо.
но так ли это возможно обычной программе уровня пользователя, чтобы изменить его?
Нет, потому что вы не можете изменить оболочку, если у вас нет прав администратора для редактирования реестра. Затем, после того как EXE-файл был настроен в качестве оболочки и автоматически запускается Windows, он теперь работает в контексте системного уровня, а не в контексте пользователя.
Как explorer.exe затрагивает те части памяти, которые недоступны обычным программам?
Это не так. В лучшем случае он может защитить свои собственные области памяти, изменяемые другими программами, и ОС в любом случае обеспечивает эту защиту большей частью. Любая программа может касаться любой области экрана. Прямой доступ к "экранной памяти" в Windows не происходит из-за аппаратной абстракции. Если вы не говорите о водителе, которым вы не являетесь.
WinAPI не контролирует меню «Пуск» и т.д., И не имеет никаких других библиотек, о которых я знаю. Как explorer.exe изменяет экранную память из этих регионов, что другие программы не могут?
И снова Explerer.exe - это меню «Пуск» и т.д. Проводник использует WinAPI для отображения своих окон и элементов управления (меню «Пуск» и панель задач - это просто окна с элементами управления).
Попробуйте этот эксперимент: откройте диспетчер задач и уничтожьте все копии Explorer.exe, которые вы видите. Когда вы убьете последний, вы заметите, что меню «Пуск» и панель задач исчезают.
Тем не менее, другие программы все еще работают и все еще видны, даже без запуска Explorer.exe. Вы даже можете использовать Диспетчер задач для обеда НОВЫХ программ; и они запустятся и будут видны с окнами, кнопками и всем прочим. :)
Эта статья CodeProject может помочь вам начать работу и поможет вам изменить элементы Explorer (в данном случае кнопку «Пуск») с точки зрения программирования: скрытие панели задач и меню запуска (start orb) в Windows Vista и Windows 7