В операционной системе Windows за работой многих, казалось бы, очень простых компонентов, скрыты сложные алгоритмы, позволяющие реализовать многие неочевидные на первый взгляд возможности. Одним из таких простых на первый взгляд компонентов является диалог ВЫПОЛНИТЬ, который можно отобразить при помощи комбинации клавиш WINDOWS+R.
Работа диалога Выполнить
Вы замечали, что для запуска при помощи диалога ВЫПОЛНИТЬ некоторых программ, нужно ввести строку, которая не является названием программы? Как же, в таком случае, диалог запуска программ работает — как он определяет, какую именно программу нужно запустить?
Прежде всего, при помощи диалога ВЫПОЛНИТЬ можно запустить любую программу, расположенную в каталогах %systemroot% и %systemroot%\system32, просто указав название этой программы. Кроме того, аналогичным методом можно запустить программы, расположенные в каталогах, определенных в переменных среды окружения.
Однако также с помощью диалога ВЫПОЛНИТЬ можно запустить программу, для которой, при помощи специальной ветви реестра, был создан псевдоним (строка, введя которую можно запустить программу).
Псевдонимы создаются при помощи ветви реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths. Каждый подраздел данной ветви определяет описание одного псевдонима и имеет название, которое и формирует псевдоним. Названия подразделов данной ветви реестра имеют следующий формат: имя_псевдонима.exe, например, photoshop.exe. Чтобы псевдоним работал, необходимо обязательно указать расширение .exe.
После того, как вы создали подраздел-псевдоним, в параметре (по умолчанию) созданного подраздела нужно указать путь к программе, для которой он и будет псевдонимом. То есть, программе, которая будет запускаться после ввода псевдонима.
Помимо параметра (по умолчанию) подраздел псевдонима может содержать параметр строкового типа path. Данный параметр определяет путь к рабочему каталогу для запускаемой псевдонимом программы.
Листинг 2.01 содержит пример псевдонима.
Листинг 2.01. Псевдоним для программ Проигрыватель Windows Media
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmp.exe]
="C:\\Program Files\\Windows Media Player\\wmplayer.exe"
"Path"="C:\\Program Files\\Windows Media Player"
Запуск программ в отдельной области памяти
По умолчанию все 16-разрядные программы запускаются в одной общей памяти, реализуемой процессом ntvdm.exe. Это приводит к аварийному завершению всех 16-разрядных программ в том случае, если хотя бы в одной из них произошел сбой. Поэтому в операционных системах Windows была реализована возможность установки запуска 16-разрядных программ в отдельных областях памяти. Чтобы установить этот алгоритм по умолчанию, достаточно параметру строкового типа DefaultSeparateVDM присвоить значение yes. Данный параметр расположен
в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\WOW.
Также, с помощью групповых политик, существует возможность отображения в диалоге ВЫПОЛНИТЬ флажка ЗАПУСТИТЬ В ОТДЕЛЬНОЙ ОБЛАСТИ ПАМЯТИ, который предназначен для тех же целей, что и описанный выше параметр, но только распространяет свои действия на отдельную программу. Для этого достаточно воспользоваться политикой ДОБАВИТЬ ФЛАЖОК «ЗАПУСТИТЬ В ОТДЕЛЬНОЙ ОБЛАСТИ ПАМЯТИ» В ОКНО КОМАНДЫ «ВЫПОЛНИТЬ» раздела КОНФИГУРАЦИЯ ПОЛЬЗОВАТЕЛЯ/АДМИНИСТРАТИВНЫЕ ШАБЛОНЫ/МЕНЮ «ПУСК» И ПАНЕЛЬ
ЗАДАЧ. Данная политика изменяет значение параметра DWORD-типа MemCheckBoxInRunDlg, расположенного в ветви реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer.