Пожалуй, ничто так не влияет на безопасность системы как сам пользователь этой системы, и порой администраторам приходится бороться не столько с вражескими троянцами, сколько с простым юзером. Для этих целей применяются учетные записи с теми или иными правами; создал группу, назначил правила, добавил пользователей и все – пускай радуются кнопке Пуск и косынке.
Та же ситуация и с интернетом, если серфить под админом по всемирной сетке, то как ни как, да найдется злобный вирь, который проникнет в систему и захочет запустить программу из командной строки для подальших пакостей, ну и для контроля пропишется в реестре. Другое дело – ограниченная учетная запись – под ней уже много чего не сделать. Но даже в таком случае приходится делать исключения – допустим, надо запустить программу через командную строку не под своей учетной записью, а под другой (с большими правами) или, же просто произвести запуск программ с дополнительными параметрами. Для этих целее будет рассмотрено две утилиты командной строки – RUNAS (запуск программы через командную строку под другой учетной записью без завершения сеанса) и START (запуск программы из командной строки с дополнительными параметрами). Помним, что для выполнения аналогичных действий сервер сценариев Windows Script Host предоставляет в распоряжение методы Run и Exec.
Утилита START – командная строка
Данная утилита предоставляет ряд дополнительных параметров:
- запуск программ в определенном режиме;
- открывать окно просмотра для заданного каталога (папки);
- открывать документы, тип которых зарегистрирован в Windows (т. е. указано, какое приложение должно открывать документ с заданным расширением).
И так, давайте познакомимся с основным синтаксисом данной утилиты:
START [«заголовок»] [/Dпуть] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL] [/WAIT] [/B] [команда/программа] [параметры]
При условии, что команда/программа определяет внутреннюю команду командной строки (DIR, COPY…) или пакетный файл, то для их запуска в новом окне (при условии, что не указан ключ /В) автоматически производится запуск программы CMD.EXE из командной строки с ключом /K. При таком условии новое окно не будет закрыто после выполнения команды. При условии, что выполняется не внутренняя утилита CMD и не пакетный файл, то эта программа запускается в графическом или текстовом окне.
При условии, что первым элементом командной оболочки будет слово CMD без расширения и пути к файлу, то обработчик команд заменит его на значение переменной COMSPEC (полный путь к командному интерпретатору). Если же первым элементом является имя выполняемой программы без расширения, то будет использовано значение переменной среды РАТНЕХТ, это даст возможность определить расширения имен исполняемых Файлов и порядок поиска нужного файла. Как правило, переменная РАТНЕХТ содержит следующие значения:
РАТНЕХТ=.СОМ;.ЕХЕ;.ВАТ;.CMD
При условии, что не будет найдено ни одного файла с заданными по дефолту расширениями, то интерпретатор команд проверит, не соответствует ли данное имя имени каталога. Если это так, то утилита START произведет запуск проводника и откроет в нем заданный каталог.
«заголовок» – определяет заголовок создаваемого окна. Например:
START «Копирование данных» copier.bat
/путь – данный параметр указывает рабочий каталог при открытии нового командного окна.
/I – данный ключ говорит, что новой операционной средой станет исходная среда, переданная командным интерпретатором cmd.exe, а не текущая среда командного окна.
/MIN – данный параметр говорит, что запуск команды/программы через командную строку происходит в свернутом виде, если же используется /МАХ — то в развернутом (максимизированном) окне.
/SEPARATE – выполнение 16 разрядного приложения в отдельной области памяти
/SHARED — выполнение 16 разрядного приложения в общей области памяти
Ключи /LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL задают приоритет запускаемой задачи.
/WAIT – запустить программу из командной строки с ожиданием ее окончания
/В — выполнение происходит без создания нового окна (конечно, если это возможно). Таким образом, если с этим ключом запускается внутренняя команда cmd.exe или пакетный файл, то новая копия командного интерпретатора будет запущена в текущем командном окне.
Примеры применения утилиты START:
Нужно запустить из окна командной строки в качестве основного процесса Microsoft Word с автоматическим открытием двух заданных файлов (имя одного из файлов содержит пробел, поэтому оно взято в кавычки):
START /MAX winword.exe «Мой документ.doc» docum.doc
Открытие окна просмотра для каталога мои документы на текущем диске:
START «Мои документы»
Открытие окна просмотра для текущего каталога:
START .
Открытие файла Мой любимый документ.doc из папки Мои документы в стандартном окне:
START «С:\Мои документы\Мой любимый документ.doc»
Утилита RUNAS командная строка
Утилита RUNAS командной строки не содержит сложного синтаксиса, и довольно проста в своем применении. Она позволяет запустить программу через командную строку от имени другого пользователя без завершения текущего сеанса работы. Как правило, ее используют администраторы для выполнения мелких системных команд. Например:
runas /user:Admin@data.com regedit.com
или
runas /user:dataAdmin regedit.exe
Естественно, что если надо выполнить приложение под другим пользователем, у которого больше полномочий и есть пароль, то понятное дело надо знать пароль, без этого никак:
runas /user:Administrator@microsoft.com regedit.exe
Enter password for Administrator@windata.com:
Attempting to start “regedit.exe” as user
«Administrator@windata.com»…
Команда в окне командной строки Runas /? предоставляет подробную справку по дополнительным параметрам этой утилиты.