Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft Windows Vista Безопасность Средства PowerToy для запуска сценариев с повышенными правами в Windows Vista RSS

Средства PowerToy для запуска сценариев с повышенными правами в Windows Vista

Текущий рейтинг: 3.53 (проголосовало 15)
 Посетителей: 8093 | Просмотров: 11167 (сегодня 0)  Шрифт: - +

В операционной системе Windows Vista представлено множество средств решения вопросов безопасности, и управление учетными записями пользователей (UAC) — одно из самых значительных. При использовании UAC даже пользователи с правами администратора выполняют большинство приложений с правами обычного пользователя, но обладают “потенциалом повышения прав” для выполнения определенных административных задач и

функций приложений. После использования Windows Vista™ в течение нескольких месяцев повышение прав (при необходимости) задач или приложений становится привычкой. Однако когда я попытался повысить права некоторых типов задач в Windows Vista, я столкнулся с множеством проблем. Эти неудачи меня очень разочаровали.

Поэтому я, в духе старых средств Windows® PowerToy, создал несколько новых инструментов PowerToy для запуска сценариев с повышенными правами. Найти все средства, о которых я собираюсь рассказать, можно в материалах для загрузки по адресу technetmagazine .com/code07.aspx. А почитать о том, как работает UAC, можно в статье “Мечта о работе с правами обычного пользователя достигается с помощью UAC”, написанной в ноябре 2006 г. Алексом Хитоном (Alex Heaton) (см. колонку “Дополнительные материалы”).


Средство Elevate Command PowerToy

Первым неудобством было отсутствие способа повысить права приложения из командной строки или из диалогового окна “Запуск программы”. Поспрашивав людей в Майкрософт, я нашел сценарий, написанный Джоном Стивенсом (John Stephens), инженером по разработке программного обеспечения корпорации Майкрософт. В сценарии я обнаружил то, что мне было нужно. Оказывается, если передать команду “runas” API-функции ShellExecute или ее COM-эквиваленту, методу ShellExecute объекта Shell.Application, запущенное приложение выведет запрос на повышение прав (подробнее см. в боковой панели). Это позволило мне создать первое средство PowerToy для повышения прав — Elevate Command PowerToy.

Это средство (состоящее из файлов ElevateCommand.inf, elevate.cmd и elevate.vbs) добавляет в систему команду elevate. Это позволяет из командной строки, сценария или диалогового окна “Запуск программы” запускать приложения с запросом на повышение прав. Например, следующая команда открывает файл Win.ini в Блокноте (после вывода запроса на повышение прав):

elevate notepad c:\Windows\Win.ini

При использовании команды elevate с сервером сценариев Windows (WSH), оболочкой Windows PowerShell™ или другими сценариями необходимо в качестве запускаемого приложения указать исполняемый файл сервера сценариев (например wscript, cscript или powershell). Так, для запуска VBS-файла нужно использовать такой код:

elevate wscript “C:\windows\system32\
slmgr.vbs” –dli

Объяснение можно найти в тексте справки. Для его просмотра используйте команду elevate с параметром -? или без параметров вообще.


Запуск сценариев от имени администратора

Следующим неудобством было отсутствие для большинства типов сценариев Windows пункта контекстного меню “Запустить от имени администратора” (при щелчке файла правой кнопкой мыши в проводнике). Единственным исключением были сценарии командной оболочки (расширения BAT и CMD). Я приступил к исследованию этого вопроса. Управление многими пунктами контекстного меню для различных типов файлов осуществляется с помощью разделов “command” для каждого типа файлов в разделе реестра HKEY_CLASSES_ROOT (подробнее см. в колонке “Команды и сопоставление файлов”). Оказывается, что если раздел команды имеет имя “runas”, то вызванная команда выведет запрос на повышение прав. Это позволило мне создать следующие средства PowerToy:

  • PowerToy для повышения прав приложений HTML (ElevateHTA.inf);
  • PowerToy для повышения прав сценариев Windows PowerShell (ElevatePowerShellScript.inf);
  • PowerToy для повышения прав WSH-сценариев (ElevateWSHScript.inf, elevate.cmd, elevate.vbs).

Данные средства добавляют в контекстное меню пункт “Run As Administrator” (запуск от имени администратора, рис.1) для типов файлов HTA, Windows PowerShell и сервера сценариев Windows соответственно. Файл ElevateWSHScript.inf также добавляет пункт “Run as Administrator with Command Prompt” (запуск от имени администратора в командной строке). (Перед выполнением установки прочитайте примечание в ElevatePowerShellScript.inf.)

Рис. 1 Пункты контекстного меню “Запустить от имени администратора”
Рис. 1 Пункты контекстного меню “Запустить от имени администратора”

Повышение прав других типов файлов

Механизм использования команды runas можно применять практически к любому типу файла. Например, установщик Windows в Windows Vista “знает, что делать”, если для установки пакета потребуется повышение прав. Однако некоторые плохо построенные пакеты (в которых, например, пользовательские действия не обозначены должным образом) не будут правильно устанавливаться с включенным UAC, если только для установки файл msiexec.exe не будет запущен из командной строки с повышенными правами.

Чтобы было можно осуществлять такой запуск прямо из проводника, я создал средство ElevateMSI.inf. Оно копирует действия по умолчанию для пакетов (MSI) и исправлений (MSP) установщика Windows, добавляя пункт контекстного меню “Install as Administrator” (установить от имени администратора) для пакетов и “Apply Patch as Administrator” (применить исправление от имени администратора) для исправлений.


CMD Prompt Here as Administrator и PowerShell Prompt Here as Administrator

Одно из самых популярных средств Windows PowerToy — достославная Command (или CMD) Prompt Here. После ее установки можно щелкнуть правой кнопкой мыши папку или диск в проводнике и в контекстном меню выбрать пункт “CMD Prompt Here”. В результате запустится командная строка с выбранной папкой в качестве текущей.

Это настолько удобно, что я использую это средство PowerToy много раз каждый день. Пытаясь научиться использовать Windows PowerShell, я обнаружил, что мне не хватает этой возможности и там. Поэтому я и создал средство PowerToy “PowerShell Prompt Here” (см. колонку “Старая игрушка опять пригодилась”).

Но и этого мне было мало: очень часто открывать командную строку оболочки требовалось с повышенными правами. Это привело к созданию последних двух средств PowerToy: CMD Prompt Here as Administrator (CmdHereAsAdmin.inf) и PowerShell Prompt Here as Administrator (PowerShellHereAsAdmin.inf, elevate.cmd, elevate.vbs) , показанных на рис. 2.Оба средства работают таким же образом, как их аналоги без повышенных прав (которые для вашего удобства тоже включены в материалы для загрузки).

Рис. 2 Командные строки с повышенными правами
Рис. 2 Командные строки с повышенными правами

Установка и реализация

Для установки этих средств PowerToy щелкните правой кнопкой мыши файл INF, выберите “Установить” и подтвердите повышение прав. Для удаления используйте пункт панели управления “Программы и компоненты”.

Если вы будете изучать файлы INF более подробно и заинтересуетесь, почему три средства PowerToy устанавливают файлы elevate.cmd и elevate.vbs в разные места, поясняю. Большинство средств PowerToy реализуются путем добавления подраздела runas в раздел HKEY_CLASSES_ROOT\objecttype\Shell для типа объекта в реестре.

Однако для некоторых средств PowerToy существовали типы объектов, в которых я хотел использовать два пункта контекстного меню, которые вызывают повышение прав (“CMD Prompt Here as Administrator” и “PowerShell Prompt Here as Administrator” для типов объектов Drive и Directory; “Run as Administrator” и “Run as Administrator with Command Prompt” для всех типов объектов WSH). Так как у каждого типа объекта может быть только один подраздел runas, для вызова команды elevate я должен был реализовать второе действие. Но так как я хотел, чтобы каждый файл INF можно было устанавливать и удалять независимо, я должен был разместить соответствующие копии elevate.cmd и elevate.vbs в разных местах. (Увеличивать значения счетчиков использования файлов из простого файла INF невозможно. Конечно, лучше было бы использовать MSI-установщики, но я хотел иметь такие, которые можно создавать и изменять с помощью текстового редактора.) Одним из побочных эффектов является тот факт, что значок защиты будут содержать только пункты контекстного меню, реализованные с помощью подраздела runas.


Заключение

Я надеюсь, что эти средства будут полезными для вас и улучшат впечатление от использования UAC. Возможно, они вдохновят вас на создание собственных средств PowerToy. (Те, кто использует в Windows Vista другие языки сценариев, например Perl или Python, также легко смогут создать PowerToy для повышения прав сценария и с помощью этих языков.) Как и все средства PowerToy, они не поддерживаются: это средства “на свой страх и риск”. В любом случае, не скучайте, повышая права!

Автор: Майкл Мерголо (Michael Murgolo)  •  Иcточник: TechNet Magazine  •  Опубликована: 31.05.2007
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.