Wednesday, October 18th, 2017

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

Published on Март 10, 2009 by   ·   Один комментарий

В операционной системе 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.)

Повышение прав пользователя bat

Рис. 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.Оба средства работают таким же образом, как их аналоги без повышенных прав (которые для вашего удобства тоже включены в материалы для загрузки).

Shellexecute в качестве verb runas

Рис. 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, они не поддерживаются: это средства “на свой страх и риск”. В любом случае, не скучайте, повышая права!

Иcточник: TechNet Magazine

zp8497586rq


Смотрите также:

Tags:

Readers Comments (Один комментарий)

  1. Олег Дебил:

    непонятно где скачать

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]