Практическое руководство. Публикация расширений оболочки проводника Windows и апплетов панели управления

Опубликовано: 23 Апреля, 2023


Введение


С введением TS RemoteApps в Windows Server 2008 Beta3 администраторы серверов терминалов теперь могут предоставлять пользователям несколько отдельных приложений, не открывая рабочий стол Windows. При планировании предоставления приложений таким образом следует иметь в виду, что пользователям часто потребуется доступ к определенным апплетам панели управления или частям оболочки проводника, доступ к которым обычно осуществляется через рабочий стол Windows.


В следующих примерах показано, как публиковать эти элементы с помощью двух часто используемых дополнительных пакетов Windows Server 2003 Terminal Server, Citrix Presentation Server 4.0 и Provision Networks VAS (Virtual Access Suite), и их сравнение с тем, что возможно в Windows Server 2008. Бета 3 TS RemoteApps.


Апплет панели управления принтерами


Одним из наиболее часто требуемых апплетов панели управления, к которым пользователям потребуется доступ, является панель управления принтерами. Это требование существует, поскольку не все приложения предоставляют следующие параметры:



  • выберите принтер, отличный от принтера пользователя по умолчанию
  • изменить принтер по умолчанию
  • изменить настройки принтера
  • добавить принтер
  • удалить принтер

Хотя « Принтеры и факсы » указаны в панели управления Windows, это не стандартный апплет панели управления (файл с расширением.cpl). Апплет панели управления принтерами и факсами на самом деле является расширением оболочки проводника Windows. Расширения оболочки — это библиотеки динамической компоновки (файл с расширением.dll), которые обычно доступны через пункты меню проводника Windows, пункты контекстного меню и т. д. и перечислены в реестре Windows в разделе HKEY_Classes_RootCLSID{Globally_Unique_Identifier}.



Поскольку реестр Windows — не самый простой инструмент для навигации для большинства людей, я бы рекомендовал администраторам, не обладающим экспертными знаниями о реестре Windows, использовать бесплатный инструмент, такой как ShellExView, для просмотра доступных расширений оболочки.


ShellExView предоставляет простой в использовании пользовательский интерфейс для просмотра и просмотра свойств доступных расширений оболочки.



Одна из целей публикации приложений — предоставить функциональные возможности, которые нужны конечным пользователям, без раскрытия базовой файловой системы или рабочего стола Windows. При публикации панели управления принтерами это означает возможность запуска панели управления принтерами и запрет пользователю просматривать другие апплеты панели управления, локальные или сетевые файловые ресурсы.


При использовании Citrix Presentation Server и Provision Networks VAS это делается следующим образом:



  1. Создайте каталог на сервере терминалов Windows с именем:
    «Принтеры.{2227A280-3AEA-1069-A2DE-08002B30309D}»
  2. Создайте копию « explorer.exe » и сохраните ее под узнаваемым именем, например, « PrintExplorer.exe ».
  3. Публиковать:
    «%WinDir%PrintExplorer.exe /n,/root, %SystemDrive%Printers.{2227A280-3AEA-1069-A2DE-08002B30309D}»




  1. Выберите соответствующий значок принтеров из shell32.dll.
  2. Настройте приложение для использования общего доступа к сеансу, чтобы панель управления принтерами запускалась в том же сеансе сервера терминалов, что и запущенные пользователем приложения.

В Windows Server 2008 Beta 3 RemoteApp Manager процесс аналогичен:



  1. Создайте каталог на сервере терминалов Windows с именем:
    «Принтеры.{2227A280-3AEA-1069-A2DE-08002B30309D}»
  2. Добавьте « explorer.exe » в качестве TS RemoteApp
  3. В свойствах TS RemoteApp выберите:
    « Всегда используйте следующие аргументы командной строки »
  4. Введите следующее в качестве аргумента командной строки:
    c :Printers.{2227A280-3AEA-1069-A2DE-08002B30309D}


Windows Server 2008 Beta 3 не позволяет:



  • Запускаем копию explorer.exe
  • Запуск панели управления принтерами в окне проводника с одной панелью с помощью переключателя «/n».
  • Использование переключателя «/root» для запутывания локальной и удаленной файловой системы.

Рундлл32


Следует отметить, что, как и в большинстве других вещей в ОС Windows, существует более одного способа запуска расширения оболочки проводника.


Rundll32.exe можно использовать для создания расширений оболочки проводника, таких как:



  • Диалоговое окно добавления принтера:
    RUNDLL32 SHELL32.DLL, SHHelpShortcuts_RunDLL AddPrinter
  • Диалоговое окно подключения к принтеру:
    RUNDLL32 WINSPOOL.DRV,ConnectToPrinterDlg
  • Поменять местами кнопки мыши:
    RUNDLL32 USER32.DLL, SwapMouseButton
  • Диалоговое окно «Подключить сетевой диск»:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL Подключиться
  • Диалоговое окно отключения сетевого диска:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL Отключить

Rundll32.exe также можно использовать для открытия панели управления или определенных апплетов панели управления:



  • Апплет панели управления:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL
  • Апплет панели управления специальными возможностями:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL access.cpl
  • Добавить апплет панели управления мастером оборудования:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL hdwwiz.cpl
  • Добавить апплет панели управления «Удалить программы»:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL appwiz.cpl
  • Апплет панели управления автоматическими обновлениями:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL wuaucpl.cpl
  • Апплет панели управления свойствами даты и времени:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL timedate.cpl
  • Апплет панели управления «Свойства экрана»:
    RUNDLL32.EXE SHELL32.DLL,Control_RunDLLdesk.cpl
  • Апплет панели управления свойствами мыши:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL main.cpl
  • Апплет панели управления сетевыми подключениями:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL ncpa.cpl
  • Апплет Панели управления Мастера настройки сети:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL netsetup.cpl
  • Апплет панели управления администратора источника данных ODBC:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL odbccp32.cpl
  • Апплет панели управления телефоном и модемом:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL phone.cpl
  • Апплет панели управления свойствами параметров электропитания:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL powercfg.cpl
  • Апплет панели управления принтерами и факсами:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLLПапка принтеров
  • Апплет панели управления региональными параметрами:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL междунар.cpl
  • Апплет панели управления звуком и аудиоустройствами:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL mmsys.cpl
  • Апплет панели управления Sun Java:
    RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL jpicpl32.cpl
  • Апплет панели управления системой:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL sysdm.cpl
  • Апплет панели управления учетными записями пользователей:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL nusrmgr.cpl
  • Апплет панели управления брандмауэром Windows:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL firewall.cpl
  • Апплет панели управления Центра обеспечения безопасности Windows:
    RUNDLL32.EXE SHELL32.DLL, Control_RunDLL wscui.cpl

Синтаксис для rundll32.exe:



  • « RUNDLL32.EXE <имя dll>, <точка входа> <необязательные аргументы>»

Предположим, кто-то хотел запустить панель управления свойствами дисплея, но хотел, чтобы она открывалась непосредственно на определенной вкладке, а не по умолчанию (крайняя левая вкладка). Это может быть достигнуто с помощью:



  • Панель управления «Свойства экрана» (вкладка «Рабочий стол»):
    RUNDLL32.EXE SHELL32.DLL,Control_RunDLLdesk.cpl,,0
  • Панель управления «Свойства экрана» (вкладка «Заставка»):
    RUNDLL32.EXE SHELL32.DLL,Control_RunDLLdesk.cpl,,1
  • Панель управления «Свойства экрана» (вкладка «Внешний вид»):
    RUNDLL32.EXE SHELL32.DLL,Control_RunDLLdesk.cpl,,2

Резюме


Windows предлагает несколько различных способов запуска расширений оболочки проводника и апплетов панели управления, будь то с помощью explorer.exe, копии explorer.exe или с помощью RUNDLL32.DLL. Важно не предполагать, что каждый из них будет работать одинаково в любой операционной системе и что каждый из них будет успешно запускаться без создания рабочего стола Windows. Всегда рекомендуется проводить тестирование в вашей среде, чтобы избежать непредвиденных результатов.


Использованная литература:


Как открыть определенные значки панели управления (.cpl) и файлы приложений (.jar,.doc,.xls,.msc,.mdb,.hlp) как опубликованное приложение


Как опубликовать диспетчер печати на терминальном сервере Windows NT/2000/2003


Как запустить инструменты панели управления, введя команду


ИНФОРМАЦИЯ: Интерфейс Windows Rundll и Rundll32


Использование RUNDLL32.exe в Windows