Автор работы: Пользователь скрыл имя, 27 Июня 2012 в 09:22, лекция
Немаловажной частью оптимизации работы на компьютере является автоматизация повседневных задач, которые могут перед вами возникнуть. Мы рассмотрим способы автоматизации работы с реестром, файловой системой и отдельными компонентами операционной системы Windows при помощи различных методов: информационных файлов, сервера сценариев Windows, инструментария управления Windows или при помощи специальных программ командной строки, поставляемых вместе с операционной системой Windows XP.
4. Основы автоматизация работы Windows
Немаловажной частью оптимизации работы на компьютере является автоматизация повседневных задач, которые могут перед вами возникнуть. Мы рассмотрим способы автоматизации работы с реестром, файловой системой и отдельными компонентами операционной системы Windows при помощи различных методов: информационных файлов, сервера сценариев Windows, инструментария управления Windows или при помощи специальных программ командной строки, поставляемых вместе с операционной системой Windows XP.
При этом внимание будет уделено не только способам автоматизации различных задач, но и их ручному выполнению, чтобы пользователь смог понять, что для него лучше — написать сценарий, проделывающий работу, или просто самостоятельно ее выполнить, не тратя драгоценное время на автоматизацию.
В этом разделе опишем начальные сведения о таких возможностях автоматизации управления Windows, как информационные файлы (INF-файлы), сервер сценариев Windows, объектные модели WSH, FSO и т. д., а также основы работы с объектной моделью WMI. Приведенная информация является лишь вводной частью в технологии автоматизации, и в ней мы рассмотрим только основы работы с этими возможностями Windows.
Здесь предполагается, что вы хотя бы в теории знакомы с основами программирования на языке VBScript. Конечно, по мере использования в примерах сценариев новых стандартных функций языка VBScript их синтаксис и способы применения будут описываться, но если вы не понимаете основ программирования, то не сможете разобраться даже с самым простым сценарием.
Этот раздел содержит основные нюансы, которые могут быть незнакомы даже пользователям, не первый год применяющим для своей работы язык сервера сценариев Windows (к объектной модели WMI и INF-файлам это также относится). Следующий раздел, во-первых, описывает способы создания сценариев, начиная от более простого и заканчивая более сложным, а во-вторых, большинство стандартных функций VBScript, способы использования некоторых возможностей объектных моделей Windows и наиболее интересные свойства и методы WMI. Поскольку в лекции нельзя привести действительно полноценные сценарии (из-за их большого размера: например, стандартный сценарий pagef ileconfig.vbs, поставляемый вместе с операционной системой, состоит из 56 страниц текста), было решено в качестве примеров использовать сценарии, выполняющие какие-либо функции, при этом удаляя из их кода части, несущественные для описываемого материала. Поэтому для полного понимания приведенной в лекции информации рекомендуется проанализировать дополнительные сценарии, расположенные на компакт-диске, прилагаемом к книге.
4.1. Работа с INF-файлами
Информационные файлы используются для конфигурирования устройств и ceтевых компонентов и поставляются вместе с ними. Каждое новое устройство, выпускаемое на мировой рынок, в лучшем случае должно иметь соответствующие INF-файлы, явным образом определяющие ресурсы и файлы, необходимые для поддержки данного класса устройств. INF-файлы могут также использоваться для создания сценариев установки, автоматически запускаемых во время помещения компакт-диска в привод.
Синтаксис INF-файлов базируется на трех правилах, в чем-то подобных правилам синтаксиса INI-файлов. Имена разделов заключаются в квадратные скобки и должны быть уникальными в пределах одного файла. Подразделы в пределах раздела от первого правила не зависят, но зависят от порядка следования. Частные разделы INF-файлов не разбираются Windows (под частными понимаются разделы, ссылка на которые не указана ни в одном ключевом слове INF-файла).
Раздел [version]
Самым первым разделом, который должен быть определен в любом INF-файле, является раздел [version]. Он хранит заголовок файла и класс устройств, поддерживаемых этим файлом. Каждый INF файл должен начинаться с заголовка. Он определяет версию INF-файла и операционной системы, для которой этот файл написан. Он также определяет, является ли данный информационный файл корректным и используется ли он для установки компонентов Plug and Play. Раздел [version] может включать в себя следующие ключевые слова.
o Signature — определяет сигнатуру версии Windows, для которой создан этот файл. При обработке сигнатуры Windows XP не различает строчных и прописных букв, поэтому такие ее значения, как $CHICAGO$ и $Chicago$, являются эквивалентными. Для х86-процессоров существуют две сигнатуры версии Windows: $WIND0WS NT$ и $CHICAGO$.
Первая из них определяет, что информационный файл был написан специально для операционных систем линейки Windows NT, то есть в операционных системах Windows 9x данный файл работать не будет.
Сигнатура $CHICAGO$, в свою очередь, говорит о том, что данный информационный файл был написан для операционных систем семейства Windows 9x. При этом данное обстоятельство никак не отразится на поддержке INF-файла операционными системами семейства Windows NT, то есть INF-файлы с такой сигнатурой будут работать во всех операционных системах Windows. Именно поэтому в примерах данной книги будет использоваться сигнатура $CHICAGO$.
o Class — определяет в реестре класс для устройства, которое поддерживается данным файлом (возможные классы устройств и их настройки описываются в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\
o SetupClass — указывает, что INF-файл будет загружен программой установки. Если файл не добавляет никаких компонентов оборудования, а используется для установки программного обеспечения, то следует использовать значение BASE данного ключевого слова.
o Provider — необязательное ключевое слово, которое указывает имя создателя INF-фай-ла или компанию, создавшую оборудование, устанавливаемое им.
o ClassGUID — также необязательное ключевое слово, при помощи которого в реестр будет записан идентификатор GUID для установленного этим файлом устройства.
o LayoutFile — необязательное ключевое слово. Оно указывает имя второго INF-файла, который будет содержать информацию о расположении установочных файлов (то есть определять, откуда следует брать файлы), и заменяет собой разделы [SourceDisksNames] и [SourceDisksFiles] информационного файла.
o AdvancedINF — это ключевое слово говорит о том, что INF-файл является расширен-ным. Расширенные INF-файлы впервые появились в Windows 98. Они поддерживают больше возможностей, чем стандартные информационные файлы, и будут описаны далее.
Существуют две версии INF-файлов: обычная и расширенная. Как мы узнали выше, чтобы создать расширенный INF-файл, необходимо добавить в блок [version] специальную строку, начинающуюся с ключевого слова AdvancedINF. Например, ниже приведен пример блока версии для расширенного INF-файла:
[version]
Signature="$CHICAGO$"
AdvancedINF=2.5,"Эта строка будет выводиться, если библиотека advpack.dll не найдена"
Для работы расширенного INF-файла необходима библиотека advpack.dll, расположен-ная по умолчанию в каталоге %systemroot%\SYSTEM32. Если перед началом выполнения расширенного INF-файла система не найдет данной библиотеки, то она выведет сообщение, указанное в ключевом слове AdvancedINF после запятой (перед запятой указывается версия библиотеки advpack.dll, необходимая для установки файла). После этого выполнение INF-файла будет прекращено.
Другой особенностью расширенных INF-файлов является то, что их нельзя выполнять с помощью контекстного меню. Выбор пункта Установить контекстного меню ни к чему не приведет. Чтобы выполнить расширенный INF-файл, необходимо воспользоваться командой rundll32.ехе ADVPACK.dll, LaunchINFSectionEx «имя файла», «имя раздела», «имя САВ-файла», «флаг».
o Имя файла — в данной команде определяет путь к вашему INF-файлу и его имя.
o Имя раздела — определяет название раздела, с которого будет начинаться выполнение расширенного INF-файла. С давних времен повелось, что начальный раздел должен называться [DefaultInstall], хотя это и необязательно.
Имя САВ-файла — является необязательным и определяет САВ-файл, хранящий все файлы, необходимые для работы устанавливаемого INF-файла. Иначе говоря, данный САВ-файл должен хранить все файлы, копируемые или перемещаемые с помощью INF-файла
o Флаг — может иметь следующие значения (является битовой маской, то есть приведенные ниже значения могут быть просуммированы):
4 — не выводить промежуточные результаты установки INF-файла;
1б — перезагрузить оболочку операционной системы после установки INF-файла;
32 — выполнить резервное копирование данных перед установкой;
64 — откатить уже установленный INF-файл;
256 — не строить список файлов при установке INF-файла;
512 — при установке INF-файла принудительно задерживать регистрацию ActiveX-объектов, которые должны быть зарегистрированы во время установки данного INF-файла.
Если вы часто устанавливаете расширенные INF-файлы, то их постоянный вызов с помощью команды rundll32 может быть утомителен. В этом случае предлагается произвести небольшое изменение в реестре, чтобы расширенные INF-файлы можно было установить с помощью пункта Установить их контекстного меню. Плюсом данного метода является еще и то, что он не влияет на установку обычных INF-файлов. Другими словами, после модификации реестра вы сможете устанавливать с помощью пункта Установить как обычные, так и расширенные INF-файлы.
Команда, выполняемая после выбора Установить из контекстного меню INF-файла, хранится в параметре (По умолчанию) ветви реестра HKEY_CLASSES_ROOT\inffile\shel
Мы уже рассматривали параметры команды rundll32.exe ADVPACK.dll, LaunchINFSectionEx, поэтому для удобства вы можете добавить значение флага этой команды, хотя в этом случае не забудьте проверить, будут ли устанавливаться обычные INF-файлы, ведь если они не смогут поддерживать указанный вами флаг, то и не будут устанавливаться. По этой же причине лучше не указывать путь к САВ-файлу в команде rundll32.exe ADVPACK.dll, LaunchINFSectionEx, записываемой в реестре.
Вообще, гораздо лучше создать дополнительный пункт контекстного меню INF-файла - например, Установить расширенный файл, а не заменять стандартный, так как при установке обычных INF-файлов с помощью пункта меню для расширенных не все ключевые слова будут работать (не будут работать возможности создания и удаления служб, перемещения содержимого INI-файлов в реестр и т. д.). Для этого, например, можно создать ветвь реестра HKEY_CLASSES_ROOT\inffile\shel
Раздел [DefaultInstall]
Продолжим рассматривать содержимое INF-файла. Независимо от его версии (обычный или расширенный), следующим после раздела [version] является раздел [DefaultInstall] (как было сказано выше, название раздела может быть другим). Именно с этого раздела будет начинаться установка информационного файла, и именно он должен содержать ключевые слова, реализующие работу INF-файла.
Вы, наверное, спросите, почему в качестве названия данного раздела необходимо использовать слово DefaultInstall? Все дело в том, что раздел именно с таким заголовком ищет система при установке INF-файла с помощью пункта Установить контекстного меню этого файла. Иными словами, если вы используете другое название раздела, то INF-файл нельзя будет установить с помощью контекстного меню, хотя по-прежнему можно будет установить с помощью команды rundll32.
Для большей наглядности посмотрим на параметр реестра, определяющий ту команду, которая будет выполняться после выбора пункта Установить контекстного меню информационного файла. Это параметр (По умолчанию) ветви реестра HKEY_CLASSES_ROOT\ inffile\shell\Install\command. Его значение равно %SystemRoot%\System32\
Если же вы не хотите, чтобы INF-файл можно было установить с помощью его контекстного меню, то можете использовать другое название начального раздела. В этом случае для установки INF-файла необходимо воспользоваться командой rundll32.exe setupapi.dll, InstallHinf Section «раздел в файле для начала установки», «флаг», «путь и имя устанавли-ваемого INF-файла».
При этом «флаг» может содержать одно из следующих значений:
0 — не перезагружать компьютер после установки INF-файла;
1 — перезагружать компьютер после установки INF-файла;
2 — спрашивать о перезагрузке компьютера после установки INF-файла;
3 — если нужно, то перезагружать компьютер после установки INF-файла; j
4 — если нужно, то спрашивать о перезагрузке компьютера после установки INF- фай- ла.
Основные команды обычных INF-файлов
Чтобы понять возможности информационных файлов, вкратце перечислим те ключевые слова, которые они поддерживают, а также опишем, что они делают (более подробное описание данных ключевых слов, а также примеры их использования будут приведены далее). Все описанные здесь ключевые слова добавляются в раздел [DefaultInstall], указывают на разделы информационного файла, а также поддерживаются расширенными INF-файлами.
o AddReg — позволяет добавить в реестр параметр либо отредактировать значение уже существующего параметра.