Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все в одном.doc
Скачиваний:
15
Добавлен:
01.03.2016
Размер:
481.79 Кб
Скачать

Преимущества

  • Отсутствие дублирования кода программы-сервера программами-клиентами.

  • Так как все вычисления выполняются на сервере, то требования к компьютерам на которых установлен клиент снижаются.

  • Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.

  • Позволяет объединить различные клиенты. Использовать ресурсы одного сервера часто могут клиенты с разными аппаратными платформами, операционными системами и т. п.

  • Позволяет разгрузить сети за счёт того, что между сервером и клиентом передаются небольшие порции данных.

Недостатки

  • Неработоспособность сервера может сделать неработоспособной всю вычислительную сеть. Неработоспособным сервером следует считать сервер, производительности которого не хватает на обслуживание всех клиентов, а также сервер, находящийся на ремонте, профилактике и т. п.

  • Поддержка работы данной системы требует отдельного специалиста — системного администратора.

  • Высокая стоимость оборудования.

Многоуровневая архитектура клиент-сервер

Многоуровневая архитектура клиент-сервер — разновидность архитектуры клиент-сервер, в которой функция обработки данных вынесена на один или несколько отдельных серверов. Это позволяет разделить функции хранения, обработки и представления данных для более эффективного использования возможностей серверов и клиентов.

Частные случаи многоуровневой архитектуры:

  • Трёхуровневая архитектура

Сеть с выделенным сервером

Сеть с выделенным сервером — это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(ы).

38. Программная структура ОС Windows NT.

39. Задача уровня абстрагирования (HAL).

Уровень абстрагирования от оборудования (Hardware Abstraction Layer, HAL). Его задачей является отделение операционной системы от особенностей конкретных реализаций в аппаратном обеспечении компьютера, т. е. от различий в материнских платах, в модификациях процессоров, в наборах микросхем и др. Благодаря этому уровню управление подсистемами прерываний, прямого доступа к памяти, системными шинами и таймерами для ядра операционной системы является одинаковым. Уровень HAL реализован в системном файле Hal.dll.

 

 

 

40)

Подсистема Win32. Состав Win32. DLL.

- Подсистема Win32 является первичной подсистемой окружения Windows NT, которая обеспечивает поддержку всех "собственных" приложений Windows NT. Все остальные подсистемы окружения выступают в качестве факультативных и загружаются только по требованию приложения-клиента. В то время как присутствие Win32 является обязательным, она функционирует постоянно, так как только она выполняет обработку входных сигналов с клавиатуры и мыши и вывод на экран для всех остальных подсистем. Поскольку прочие подсистемы зависят от вызовов API-интерфейса Win32, их все можно назвать "клиентами" Win32.

- В состав Win32 подсистемы (см. рис. 1.4) входят: cерверный процесс подсистемы окружения csrss.exe, драйвер режима ядра Win32k.sys, dll - модули подсистем (kernel32.dll, advapi32.dll, user32.dll и gdi32.dll), экспортирующие Win32-функции и драйверы графических устройств. В процессе эволюции структура подсистемы претерпела изменения. Например, функции окон и рисования с целью повышения производительности были перенесены из серверного процесса, работающего в режиме пользователя, в драйвер режима ядра Win32k.sys. Однако это и подобные изменения никак не отразились на работоспособности приложений, поскольку существующие вызовы Win32 API не изменяются с новыми выпусками системы Windows, хотя их состав постоянно пополняется.

- DLL (динамически подключаемая библиотека)

Набор вызываемых подпрограмм, включенных в один двоичный файл, который приложения, использующие эти подпрограммы, могут динамически загружать в процессе своего выполнения. В качестве примера можно привести модули Msvcrt.dll (библиотека исполняющей Си подсистемы) и Kernel32.dll (одна из библиотек подсистемы Win32). DLL активно используются компонентами и приложениями ОС Windows пользовательского режима. Преимущество DLL перед статическими библиотеками состоит в том, что приложения могут разделять DLL-модули, при этом ОС Windows гарантирует, что в памяти будет находиться лишь по одному экземпляру используемых DLL.

41)

Процессы и потоки. Характеристики.

-Под процессом понимается контейнер ресурсов, используемых потоками. Процесс включает: закрытое адресное пространство, в котором располагаются код, данные и стеки потоков; список открытых описателей ресурсов; контекст защиты; идентификатор процесса.

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

- До сих пор концепцию процесса можно было охарактеризовать двумя параметрами.

Владение ресурсами (resource ownership). Процесс включает виртуальное адресное пространство, в котором содержится образ процесса, и время от времени может владеть такими ресурсами, как основная память, каналы и устройства ввода-вывода, или файлы, или же получать контроль над ними. Операционная система выполняет защитные функции, предотвращая нежелательные взаимодействия процессов на почве владения ресурсами.

Планирование/выполнение (scheduling/execution). Выполнение процесса осуществляется путем выполнения кода одной или нескольких программ; при этом выполнение процесса может чередоваться с выполнением других процессов. Таким образом, процесс имеет такие параметры, как состояние (выполняющийся процесс, готовый к выполнению процесс и т.д.) и текущий приоритет, в соответствии с которым операционная система осуществляет его планирование и диспетчеризацию.

В рамках процесса могут находиться один или несколько потоков, каждый из которых обладает следующими характеристиками. Состояние выполнения потока (выполняющийся, готовый к выполнению и т.д.). Сохраненный контекст не выполняющегося потока; один из способов рассмотрения потока — считать его независимым счетчиком команд, работающим в рамках процесса. Стек выполнения Статическая память, выделяемая потоку для локальных переменных. Доступ к памяти и ресурсам процесса, которому этот поток принадлежит; этот доступ разделяется всеми потоками данного процесса.

В рамках процесса могут находиться один или несколько потоков, каждый из которых обладает следующими характеристиками. Состояние выполнения потока (выполняющийся, готовый к выполнению и т.д.). Сохраненный контекст не выполняющегося потока; один из способов рассмотрения потока — считать его независимым счетчиком команд, работающим в рамках процесса. Стек выполнения Статическая память, выделяемая потоку для локальных переменных. Доступ к памяти и ресурсам процесса, которому этот поток принадлежит; этот доступ разделяется всеми потоками данного процесса.

42)

Физическое расположение реестра.

Сам реестр физически состоит из нескольких файлов, расположенных в папке %SystemRoot%\System32\Config. Часть файлов для раздела HKEY_CURRENT_USER хранится в папке %SystemRoot%\Profiles\Имя_пользователя. Данные файлы являются защищенными и не представляют практического интереса для пользователя.

43)

Windows 3.x Версии. Особенности ОС.

-Windows 3.x — общее название поколения операционных систем Windows от компании Microsoft, выпущенных с 1990 по 1994 год. Первым широко распространённым релизом Microsoft Windows стала 3.0, позволив Майкрософт соревноваться с Macintosh и Commodore Amiga в области операционных систем с графическим интерфейсом.

Строго говоря, Windows 1.x - 3.x представляет собой не самостоятельную ОС, а надстройку над MS DOS

- Каждый процесс в Windows выполняется в собственном окне, имеющем типовые элементы управления. Для представления объектов используется иконика, многие операции над объектами выполняются при помощи мыши. Однако, интерфейс Windows 3.x не является объектно-ориентированным, так как не обеспечивает автоматического связывания с каждым объектом определенного набора свойств и методов. Средства графического интерфейса неотъемлемо встроены в ядро системы.

Поскольку Windows 3.x использует защищенный режим процессора, она обеспечивает значительно лучшую защиту ресурсов, чем MS DOS. Вместе с тем, Windows 3.x является однопользовательской системой, т.е., не включает в себя средств аутентификации пользователей и, соответственно, авторизации. Последняя версия - Windows for Workgroups 3.11 - расширена средствами совместного использования ресурсов локальной сети (файлы, принтеры) группами пользователей.

44)

Windows 95. Версии. Особенности ОС.

Windows 95 (кодовое имя Chicago) — графическая многозадачная операционная система корпорации Microsoft. Официальная дата выхода — 24 августа 1995 года.

Отличительными особенностями являются: новый пользовательский интерфейс, поддержка длинных имён файлов, автоматическое определение и конфигурация периферийных устройств Plug and Play, способность исполнять 32-битные приложения и наличие поддержки TCP/IP прямо в системе. Windows 95 использует вытесняющую многозадачность и выполняет каждое 32-битное приложение в своём адресном пространстве.

45)

Windows 98, Версии. Особенности ОС.

Windows 98 (кодовое имя Memphis) — графическая операционная система, выпущенная корпорацией Майкрософт 25 июня 1998 года.

По сути, данная операционная система — это обновлённая версия Windows 95, по-прежнему являющаяся гибридным 16/32-разрядным продуктом, основанном на MS-DOS 7.1 . Улучшениям подверглась поддержка AGP, доработаны драйверы USB, добавлена поддержка работы с несколькими мониторами и поддержка WebTV. Как и в Windows 95 OSR 2.5, в интерфейс системы (Explorer.exe) интегрирован Internet Explorer 4 (функция Active Desktop).

46)

Программный интерфейс Win32 API.

В ОС Windows между приложением и совокупностью системных вызовов (системных сервисов в терминологии Microsoft) расположен дополнительный абстрактный слой - программный интерфейс Win32 API.

Win32 API предоставляет всеобъемлющий интерфейс, позволяющий выполнить каждое действие несколькими способами и покрывающий все области, с которыми должна работать операционная система. Естественно, что этот интерфейс содержит вызовы для создания и управления процессов и потоков, управления файловым вводом-выводом, операций с ми и графикой, безопасностью и т.д.

Если заглянуть в раздел MSDN \Platform SDK\ Win32\ Overview of the Win32 API, то можно увидеть, что Win32 API подразделяются на следующие группы.

Base Services - базовые сервисы отвечают за обеспечение доступа к ресурсам компьютера и интерфейс для работы с памятью, файлами, устройствами, процессами и потоками.

Common Control Library - библиотека общих элементов управления для разработки оконных интерфейсов.

Graphics Device Interface - вывод графики на дисплей и другие устройства.

Network Services - сетевые сервисы.

User Interface - интерфейс пользователя.

Windows Shell - функции для работы с оболочкой.

Windows System Information - информация о конфигурации системы Windows.

47)+приложения

Windows 8.Метро. Приложения метро.

Windows 8 использует новый интерфейс Metro (Modern), ранее применявшийся в ОС Windows Phone. Также доступен вариант под названием «Рабочий стол». Новый вариант дизайна стал удобнее для операций перемещения, копирования файлов и т. д. Также цветовая гамма стала ярче, а кнопки больше подходят под стиль нового пользовательского интерфейса. Вместо меню «Пуск» в интерфейсе используется «активный угол», нажатие на который вызывает пользовательский интерфейс. В нём используются не ярлыки, а плитки (tiles), которые можно двигать и группировать. Группы плиток можно именовать, а некоторым плиткам — менять размер.

48)+драйверы и граф. Подсистема

Windows 8. Настройка сети. Драйверы. Графическая подсистема.

Windows 8 — операционная система, принадлежащая к семейству ОС Microsoft Windows, в линейке следующая за Windows 7 и разработанная транснациональной корпорацией Microsoft. Поступила в продажу 26 октября 2012 года.

В Windows 8 применяется новая модель входа в систему – теперь для этого используется учетная запись Microsoft (Windows Live ID), а не традиционный локальный аккаунт. Это предоставляет массу возможностей для синхронизации данных между компьютерами и не только, но с другой стороны, создает ряд трудностей, главная из которых – проблема совместимости в домашней сети.

49)+ Тома RAID – 5

Управление внешней памятью. Типы томов. Перекрывающиеся тома. Зеркальные тома. Чередующиеся тома. Тома RAID – 5.

Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Распределению подлежит вся оперативная память, не занятая операционной системой. Обычно ОС располагается в самых младших адресах, однако может занимать и самые старшие адреса. Функциями ОС по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место, а также настройка адресов программы на конкретную область физической памяти.

Типы томов:

Простой том (Simple volume) содержит область только одного диска и не поддерживает отказоустойчивость.

Составной том (Spanned volume) может располагаться на нескольких дисках (до 32). Записываемые на такой диск данные сначала сохраняются на первом жестком диске. Когда область на первом диске будет заполнена, данные записываются на следующий диск и т.д. Составной том не является отказоустойчивым - при отказе любого диска, входящего в состав тома, все данные тома будут утеряны.

Чередующийся том (Striped volume) объединяет области нескольких жестких дисков (до 32) в единый логический том. Чередующийся том позволяет повысить производительность, так как данные записываются на несколько жестких дисков одновременно. Чередующийся том не может быть расширен. Кроме того, чередующийся том не является отказоустойчивым - при отказе любого диска, входящего в состав тома, все данные тома будут утеряны.

50.

Композитный (от латинского compositio - сложение, складывание) документ (составной) понимается как образованный сочетанием разнородных компонентов: текста, таблиц, графики.

51.

52.

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

  • модели и языки для создания выбранных компонентов; 

  • модели и языки для композиции выбранных компонентов; 

  • виды связи, с помощью которых компоненты могут взаимодействовать; 

  • механизмы обнаружения и связывания для выявленных компонентов (возможно, используемые во время исполнения). 

53.

СОМ (ComponentObjectModel — Модель многокомпонентных объектов). Она определяет стандартный механизм, с помощью которого одна часть программного обеспечения предоставляет свои сервисы другой и который работает во всех описанных выше случаях. Общая архитектура сервисов в библиотеках, приложениях, системном и сетевом программном обеспечении позволяет СОМ изменить подход к созданию программ. ВСОМ любая часть программного обеспечения реализует свои сервисы как один или несколько объектов СОМ (не следует путать объекты СОМ с объектами в языках программирования типа C++). Каждый такой объект поддерживает один или несколько интерфейсов, состоящих из методов. Метод — это функция или процедура, которая выполняет некоторое действие и может быть вызвана программным обеспечением, использующим данный объект (клиентом объекта). Методы, составляющие каждый из интерфейсов, обычно определенным образом взаимосвязаны. Клиенты могут получить доступ к сервисам объекта СОМ только через вызовы методов интерфейсов объекта — у них нет непосредственного доступа к данным объекта.

54.

Сам объект всегда реализуется внутри некоторого сервеpa. Сервер может быть либо динамически подключаемой библиотекой (DLL), подгружаемой во время работы приложения, либо отдельным самостоятельным процессом. Объект. Таблица, диаграмма, рисунок, формула или данные другого типа. Объекты, созданные в одном приложении (например, электронные таблицы), а затем связанные или внедренные в другом приложении, являются объектами OLE. Объект состоит из двух элементов: предопределенного набора данных (его также называют состоянием или атрибутами) и группы методов. Последние, реализуемые обычно в виде процедур или функций, позволяют клиенту запросить у объекта выполнение определенных задач. СОМ-объекты могут — и почти всегда это делают — поддерживать более одного интерфейса. Например, у С++-объекта лишь один интерфейс, включающий в себя все методы объекта.  Объекты языка программирования Java также могут иметь несколько интерфейсов, поэтому Java отлично подходит и для создания СОМ-объектов другими способами. СОМ-объекты имеют и классы. Класс в СОМ понимается как конкретная реализация набора интерфейсов. Может существовать несколько разных реализаций одного и того же набора интерфейсов, каждая из которых будет отдельным классом. 

55.

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

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

наследование. Идея проста: имея некоторый объект, можно создать новый, автоматически поддерживающий все или некоторые “способности” старого.  Виды наследования бывают разные. Следует отметить различия наследования реализации и наследования интерфейса. В первом случае объект наследует от своего родителя код. Когда клиент дочернего объекта вызывает один из унаследованных методов, на самом деле выполняется код метода родителя. Однако в случае наследования интерфейса потомок наследует только определения методов родителя. При вызове клиентом потомка одного из этих методов последний должен самостоятельно предоставить код обработки запроса.

56.

DDE — давний и прижившийся протокол обмена данными между разными приложениями, появившийся еще на заре эры Windows. С тех пор на его базе был создан интерфейс OLE, а в 32-разрядном API Windows появились и другие методы межпрограммного взаимодействия. Но ниша, занимаемая DDE, оста­лась неизменной — это оперативная передача и синхронизация данных в приложениях.

Приложения, использующие DDE, разделяются на две категории — клиенты и серверы (не путать с одноименной архитектурой СУБД). Оба участника процесса осуществляют контакты (conversations) по определенным темам (topic), при этом в рамках темы производится обмен элементами данных (items). Устанавливает контакт клиент, который посылает запрос, содержащий имена контакта и темы. После установления контакта всякое изменение элемента данных на сервере передается данным клиента.

57.

Visual Basic for Applications (VBAVisual Basic дляприложений) — немногоупрощённаяреализация языкапрограммирования Visual Basic, встроеннаявлинейкупродуктовMicrosoft Office (включаяверсиидля Mac OS), атакжевомногиедругиепрограммныепакеты, такиекак AutoCADSolidWorksCorelDRAWWordPerfect и ESRI ArcGIS. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic.

VBA является интерпретируемым языком. Как и следует из его названия, VBA близок к VisualBasic. VBA, будучи языком, построенным на COM, позволяет использовать все доступные в операционной системе COM объекты и компоненты ActiveX. По сути, возможно создание приложения на основе Microsoft Word VBA, использующего только средства CorelDraw.

58.

Управляющие структуры позволяют управлять последовательностью выполнения программы. Без операторов управления все операторы программы будут выполняться слева направо и сверху вниз. Однако иногда требуется многократно выполнять некоторый набор инструкций автоматически, либо решить задачу по-другому в зависимости от значения переменных или параметров, заданных пользователем во время выполнения. Для этого служат конструкции управления и циклы.

VBA поддерживает следующие конструкции принятия решений:

If . . . Then

If . . . Then . . . Else

Select Case

59.

60. Нарисуем объектную модель Excel; Сам Excel имеем Excel -> Application. Application имеет объекты: WorkBook -> WorkSheet и Chart. – WorkSheet -> Range и PrivotTable. Одинаковые объекты формируют коллекцию WorkSheets состоит из всех рабочих листов конкретной рабочей таблицы. При ссылке на объекты, вложенный в другой объект, положение в иерархической структуре объектной модели задаются с помощью точки-разделителя. Application. WorkBooks(“Книга1.xls”). WorkSheets(“Лист1”). Range(“1”). При апруенной(не могу разобрать) ссылке на объект Excel по умолчанию используется активные объекты, например: если книга активна, то к ней можно обратиться: WorkSheets(“Лист1”).Range(“1”). Если активен Лист1, то можно обращаться просто range(“1”).

61. Объекты имеет своства – параметры или настройки объекта, например: Range -> Value и Name; WorkSheet(“Лист1”). Range (“1”).Value. Основной элемент Excel – рабочая книги. Она содержит объекты: WorkSheet, Range. Объекты располагают методами, выполняющие операции над объектами: Range(A1). ClearContents. Методы применяются для изменения свойств объектов. Возможно присваивание значения переменным: Item = WorkSheets(“Лист1”). Range(A1).Value. Включает конструкции всех современных языков программирования.

62. Объект Application включает объекты WorkBooks, Windows, AddIns(Настройки). WorkBook: 1. WorkSheets 2. Charts – диаграммы. 3. Names – имена; WorkSheet 2. Range 3. Page Setup 4. Chart Objects 5. Privot Tables. Облад целыми коллекциями определенным объектом их этой коллекции: WorkSheets(“Лист1”), WorkSheets(1) – первый лист книги, Sheets(1).

63. Application обладает свойством ActiveCell – возвращает ссылку на активную ячейку.

64. Объект Range содержащийся в WorkSheet и может быть ячейкой, диапазон ячеек и содерж. На рабочем листе. Существует 3 способа создать ссылку на объекты Range: 1. Свойство Range объекта класса WorkSheet или просто Range; 2. Свойство объекта WorkSheet – ActiveSheet.Cell; 3. Свойство Offset.

65. Перечисление ячейки: (“A1, B2, C3”). Данное свойство используется в объектах WorkSheet и Range. Формат: Cells(N строки, N столбца). В ячейку А1 листа 1 вводим значение 7: WorkSheets(“Лист1”). Cell (1,1)=7. ActiveCell. Cell(2,1)=9. Свойство Offset(сдвиг строки, сдвиг столбца). Если отрицательныно – сдвиг вверх и влево, если нулевое – сдвиг не осуществляется. Число 12 вводим в ячейку, которая находится под активной: ActiveCell. Offset(1,0).

66. Формы выбора файла, выбора имени файла и его расположение при сохранении, окно выбора папки и выбора данных (скорее всего это не все, не могу сообразить что тут куда, куча какого-то кода)

67.

80.

в переменных можно хранить информацию и при закрытии документа. При этом переменные можно и не отображать в документе. Используется в VBA. С помощью интерфейса Word нельзя поместить данные в переменные.

81

Главное назначение скриптов - автоматизация повторяющихся действий. Очень многие действия, которые приходится выполнять администратору на предприятии, являются повторяющимися:

резервное копирование и восстановление;

установка ПО на компьютеры и настройка компьютеров;

установка патчей для операционной системы и приложений;

загрузка и выгрузка данных;

настройка рабочей среды пользователя;

и т.д.

Часто бывает удобно совместить возможности внешних утилит и своих скриптов.

Какие для существуют средства автоматизации:

1) командные файлы DOS (*.bat) и Windows (*.cmd)

+ : можно использовать всегда, простота в написании и применении

- : малое количество возможностей, практически нет функций и возможностей обращения к программным объектам, не хватает многих конструкций языков программирования

2) обычные программы (на TurboPascal, C, Visual Basic, Delphi и т.п.)

+ : любые возможности, полноценные языки программирования

- : предназначены для профессиональных программистов (требуют много времени для освоения), программы компилируются -> трудно корректировать, могут быть проблемы с наличием необходимых библиотек на компьютере

3) специальные программные среды третьих фирм (например, PowerBatch):

+ : специализированные среды для выполнения административных операций, множество возможностей

- : слишком узкая специализация - знание встроенных в эти продукты языков больше нигде не пригодится, необходимость предварительно устанавливать соответствующие продукты на компьютеры пользователей

Наиболее рекомендуемое средство для выполнения этих операций - Windows Script Host (раньше называлась Windows Scripting Host), WSH.

WSH - набор программных компонентов для запусков скриптов (преимущественно в административных целях), который поставляется с операционной системой Windows.

82

Хосты - те программы, которые запускают скрипты. В состав Windows входят несколько хостов -

• хост Internet Explorer (самый распространенный, именно его по умолчанию имеют в виду авторы книг по VBScript и JScript, обычно не упоминая про все остальные),

• хост IIS - приложения ASP,

• хост WSH - среда выполнения - сама операционная система.

При желании можно добавить дополнительные хосты.

Интерпретаторы скриптов - по умолчанию с Windows поставляются только два:

• интерпретатор VBScript;

• интерпретатор JScript.

Опять-таки можно добавить дополнительные интерпретаторы (ActivePerl, TCL и т.п.).

Интерпретаторы в Windows представлены двумя файлами: wscript.exe и cscript.exe. Оба позволяют работать с VBScript и JScript и применять все возможности административных скриптов. Отличия:

• wscript - средство, ориентированное на работу с графическим интерфейсом, вывод - через графические окна сообщений;

• cscript - ориентировано на командную строку, вывод - на консоль.

Отличия можно увидеть наглядно на примере выполнения команды

83.

скрипты - это текстовые файлы, поэтому в принципе можно обойтись любым текстовым редактором, вроде Notepad. Однако гораздо удобнее лучше использовать специализированные средства:

1) Microsoft Script Debugger - версия 1.0 поставляется вместе с Windows 2000, в Windows 98/ME нужно устанавливать отдельно

• преимущества: бесплатный, встроен в операционную систему, подсветка синтаксиса;

• недостатки: нет встроенного Object Browser, сильно ориентирован на отладку скриптов Internet Explorer и IIS/ASP (включая всю документацию, шаблоны и т.п.), нет возможности изменять скрипт прямо в окне отладчика;

2) при установленном Visual Studio 6.0 отладчиком по умолчанию становится Visual InterDev, а при установленном Visual Studio.NET - среда разработки VS.NET:

• преимущества: для разработчиков - привычная среда со всеми возможностями, есть Object Browser

• недостатки: полностью ориентированы на Internet Explorer и IIS/ASP (нужной документации нет в том числе и MSDN).

3) специализированное средство: Sapien PrimalScript

• преимущества: средство специализированное и фактически стандартное (рекомендуется в курсах MOC и практически во всех книгах), встроенный Object Browser, удобные шаблоны, примеры и дополнительная документация, интеграция с Visual Source Safe, макросы и т.п. В качестве отладчика автоматически вызывается Microsoft Script Debugger.

• - недостатки: платное средство, которое нужно покупать и устанавливать отдельно.

Запуск Microsoft Script Debugger - не из меню Start (в этом случае отлаживать скрипт будет невозможно, а через wscript или cscript:

• wscript //D мой_скрипт.vbs ' - скрипт откроется в отладчике на первой команде Stop (если команды Stop нет, то отладчик не откроется);

• wscript //X мой_скрипт.vbs ' - скрипт откроется в отладчике на первой исполняемой команде;

вызов из PrimalScript: меню Script -> Debug Script или Shift-F7.

Версии WSH и VBScript:

WSH версии 1.0 поставлялся с Windows NT 4.0 Option Pack и Windows 98

С Windows 2000 по умолчанию устанавливалась версия WSH 2.0, language engines - версии 5.1.

Текущая (март 2003) версия - WSH 2.0, language engines версии 5.6 (эта версия поставляется с Windows XP и Windows Server 2003).

В большинстве случаев администраторы ставят в сети принудительно на все компьютеры единую (последнюю) версию WSH/script engines во избежание проблем.

84.

VBScript является подмножеством языка Microsoft Visual Basic for Applications (сокращенно – VBA), поставляемого с Microsoft Office и Visual Basic. Документация - не в MSDN, а нужно скачивать отдельно с Web-сайта Microsoft в виде файла vbsdoc.exe (была установлена на предыдущей лабораторной). Основные синтаксические принципы VBScript как языка программирования:

• VBScript нечувствителен к регистру;

• чтобы закомментировать код до конца строки, используется одинарная кавычка (') или команда REM;

• символьные значения должны заключаться в двойные кавычки;

• максимальная длина любого имени в VBScript (переменные, константы, процедуры) - 255 символов;

• начало нового оператора - перевод на новую строку (точка с запятой, как в C, Java, JavaScript для этого не используется);

• ограничений на максимальную длину строки нет. Несколько операторов в одной строке разделяются двоеточиями:

WScript.Echo "Проверка 1" : WScript.Echo "Проверка 2"

• для удобства чтения можно объединить несколько физических строк в одну логическую при помощи пробела:

WScript.Echo "Сообщение пользователю" _

& vUserName

• можно объявлять и использовать переменные только одного типа данных - Variant (об этом позже).

Для тех, кто работал с обычным Visual Basic, основные отличия VBScript от Visual Basic:

• VBScript - интерпретируемый язык (программы запускаются и работают медленнее, но вносить в них изменения намного удобнее);

• VBScript не требует, чтобы код скрипта был помещен внутрь блока Sub() или Function();

• нет команды Debug.Print (вместо нее рекомендуется использовать WScript.Echo);

• в VBScript - большие ограничения при работе с библиотеками типов (не все типы данных поддерживаются, объектная модель должна соответствовать правилам Automation, константы без объявления их в теле скрипта использовать нельзя). Некоторые из этих ограничений можно обойти при помощи возможностей XML в файлах *.wsf.

85

Оператор — это наименьшая способная выполняться единица кода VBScript. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBScript или выполнять какое-либо действие в программе.

Арифметических операторов в VBScript всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/), и еще три:

возведение в степень (^). Например 2^3 = 8;

целочисленное деление (\). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 5\2 = 2;

деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

Переменные — это контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе — вы сдаете в гардероб какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы "предъявляете номерок" и получаете их. Пример работы с переменными в VBScript может выглядеть так:

Dim nMyAge

nMyAge = nMyAge + 10

MsgBox nMyAge

Перед работой с переменной настоятельно рекомендуется ее объявить. Объявление переменной в нашем примере выглядит так:

Dim nMyAge

Расшифруем эту строку.

Dim — это область видимости переменной. В VBSript предусмотрено 3 ключевых слова для определения области видимости переменных:

Dim — используется в большинстве случаев. Если переменная объявлена как Dim в области объявлений модуля, то она будет доступна во всем модуле, если в процедуре — только на время работы этой процедуры.

Private — при объявлении переменных в стандартных модулях VBScript значит то же, что и Dim. Отличия проявляются только при создании своих классов (эта тема в данном курсе не рассматривается).

Public — такая переменная будет доступна всем процедурам во всех модулях данного проекта, если вы объявили ее в области объявлений модуля. Если вы объявили ее внутри процедуры, она будет вести себя как Dim.

86

Вообще-то VBScript имеет только один тип данных, который называется Variant. Тип Variant – это специальный тип данных, который может содержать данные различных типов. То есть вам нет необходимости объявлять переменную конкретного типа. Достаточно просто объявить имя переменной, а какие данные будут в этой переменной - интерпретатор определит автоматически во время выполнения скрипта.

Тип Variant может содержать как числовые, так и строковые данные. Данные интерпретируются как числовые, когда в вашей программе вы используете их в математических выражениях и как текстовые, когда вы используете их при работе со строками. Таким образом, если VBScript распознаёт ваши данные как числовые, то с этими данными можно работать как с числами. Если же данные содержат символы, отличные от применяемых в числах, то эти данные интерпретируются как строковые. Если вы хотите, чтобы числовые данные интерпретировались VBScript как строковые, то вы должны заключать их в двойные кавычки (" ")

Byte/integer/boolean/ Currency/long/ String/double

87

Операторы условного перехода в VBScript, If Then Else, Select Case, ElseIf, вложенность конструкций

В VBScript - только два: If...Then...Else (удобнее для проверки одного условия) и Select Case (удобнее для проверки нескольких условий).

Вначале - о If...Then...Else:

Если в одной строке, то вполне допускается так:

If MyVar = 5 Then WScript.Echo “MyVar = 5”

Если в нескольких строках, то придется добавлять команду End If:

If MyVar = 5 Then

WScript.Echo “MyVar = 5”

Else

WScript.Echo “My Var не равно 5”

End If

Конструкция ElseIf позволяет проверять несколько условий:

If MyVar = 5 Then

WScript.Echo “MyVar = 5”

ElseIf MyVar = 10 Then

WScript.Echo “MyVar = 10”

Else

WScript.Echo “Чему равно, непонятно”

End If

88

В языке программирования VBScript предусмотрено несколько десятков встроенных функций. Используются они очень активно, и во многих ситуациях без них не обойтись. Профессиональные программисты применяют их совершенно автоматически, а обычным пользователям хочется посоветовать потратить несколько часов на знакомство с ними, потому что без знаниях этих функций эффективно работать в VBScript не получится. Дополнительным аргументом в пользу их изучения является то, что практически идентичный набор функций есть в обычном Visual Basic и VBA, а многие из этих функций с теми же названиями и синтаксисом встречаются и в других языках программирования — C++, Delphi, Java, JavaScript и т. п.

Функции преобразования и проверки типов данных VBScript, CBool(), CByte(), CCur(), CDate(), CDbl(), CInt(), CLng(), CSng(), CStr(), TypeName(), IsNumeric(), IsDate(), IsArray(), IsEmpty(), IsError(), IsMissing(), IsNull(), IsObject()

В программах на VBScript очень часто приходится преобразовывать значения из одного типа данных в другой. Приведу несколько типичных ситуаций, когда этим приходится заниматься:

преобразование из строкового значения в числовое при приеме значения от пользователя через InputBox();

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

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

89

Классы - это блоки функциональности, которые можно использовать в программах, в нашем случае - скриптах. Для наших целей их можно считать «чертежами» для создания объектов. На основе этих "чертежей" создаются экземпляры классов - объекты. Коллекция классов обычно называется библиотекой типов и в Windows она «упакована» в файл dll или ocx. Такие библиотеки типов откомпилированы - классы из них можно использовать, но просмотреть их исходный код нельзя (технология "черного ящика").

Чаще всего в скрипте производится создание объекта определенного класса (instantiation) и далее работа производится с этим объектом. В одном скрипте вполне можно использовать несколько разных объектов одного и того же класса.

Создание объекта производится очень просто:

Set Объектная_переменная = CreateObject(“Библиотека.Класс”)

Например:

Dim oNetwork

Set oNetwork = CreateObject("Wscript.Network")

oNetwork.MapNetworkDrive "z:", \\London\Labs

Функция CreateObject() встроена в VBScript. WScript - это одновременно и имя библиотеки типов (как в нашем примере), и имя специального объекта, который создается в момент запуска скрипта (и поэтому его специально создавать не нужно) и существует до конца выполнения скрипта WSH.

Пример - в любом месте скрипта вы можете использовать его метод Wscript.Echo.

Чтобы явно удалить объект (например, чтобы освободить оперативную память) можно использовать команду

Set объект = Nothing

Все объекты, которые не удалены явным образом, удаляются автоматически при завершении работы скрипта, однако правило хорошего тона - удалять все объекты, в которых пропала надобность, явно (во избежание разных проблем)

90

Обычно в скрипте используются методы и свойства созданного объекта.

Метод может выполнять какие-либо действия, принимать и возвращать значения. Чаще всего нам неважно, какой именно код выполняет тот или иной метод используемого нами объекта, однако знать, как тот или иной метод можно вызвать, мы обязаны. Всего три способа:

1) простой вызов метода выглядит как

Объект.метод

При этом не возвращаются и не принимаются никакие параметры.

2) второй способ:

объект.метод параметр1 [, параметр2, ... , параметр]

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

3) третий способ:

моя_переменная = объект.метод (параметр1 [, параметр2, ... , параметрn])

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

моя_переменная = объект.метод()

91

Основная функциональность скриптов реализуется через библиотеки классов. В Windows, как правило, библиотеки классов реализованы при помощи COM-технологий.

Все классы идентифицируются по ProgID (Programmatic Identifier). Информация о ProgID хранится в разделе реестра HKEY_CLASSES_ROOT и через него определяется, какой файл *.dll, *.exe и *.ocx содержит данный объект. ProgId состоит из имени библиотеки типов и имени класса. Например, при выполнении команды

Set MyObject = CreateObject(“Scripting.FileSystemObject”)

Через реестр определяется физический файл, в котором находится библиотека Scripting и класс FSO.

Скриптовые среды (в том числе WSH) работают с COM-объектами с определенными ограничениями. Одно из главных ограничений - по типам данных, которые могут передаваться COM-объектам. Поэтому из скриптов можно обращаться далеко не ко всем COM-объектам. COM-объекты, которые полностью соответствуют требованиям скриптов, называются объектами автоматизации (automation objects).

92

Запуск приложения производится при помощи объекта WScript.Shell. Первая строка для работы с этим объектом выглядит как

Dim WshShell

set WshShell = WScript.CreateObject("WScript.Shell")

Сам запуск производится при помощи метода Run:

WshShell.Run "Имя_приложения"

Необязательные параметры: цифра (1-10) - вид диалогового окна, true/false - приостанавливать выполнение скрипта пока не завершится работа программы или нет.

93

Выполнению операций с Панелью управления, System Tray, меню Start и т.п. поможет объект Shell.Application. Этот объект представляет графическую оболочку Windows - Windows Explorer:

Dim oShell

Set oShell = CreateObject("Shell.Application")

oShell.TrayProperties()

oShell.SetTime()

Через этот объект можно также получить доступ к любому элементу панели управления:

oShell.ControlPanelItem("powercfg.cpl")

Можно выполнить команду из контекстного меню для любого файла:

Set oShell = CreateObject("Shell.Application")

Set Folder = oShell.NameSpace("C:\")

Set File = Folder.ParseName("params.txt")

File.InvokeVerb("Open")

Можно приостанавливать работу компьютера (Suspend), можно отключать ноутбуки от доковой станции и выполнять кучу других задач.

94-97

Работа с объектами файловой системы из скрипта VBScript, объектная библиотека ScriptingRuntime, объекты FileSystemObject, Drive, Folder, File, TextStream, просмотр всех каталогов на диске, запись/чтение информации из текстового файла

Основные возможности работы с объектами файловой системы через WSH реализованы при помощи класса FileSystemObject, который физически находится в библиотеке Scrrun.dll. Как правило, работа начинается с создания объекта FSO:

Dim fso1

Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")

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

Наиболее часто используемые возможности:

1) просмотреть/запротоколировать информацию о всех дисках на компьютере (используется свойство Drives, возвращающее набор дисков, и свойства объекта Drive):

Set oDrives = fso1.Drives

For Each i In oDrives

MsgBox ("Буква диска: " & i.DriveLetter & " Тип диска: " & i.DriveType & "Метка диска: " & i.VolumeName & " Готовность к работе: " & i.IsReady)

Next

Подробнее про объект Drive - ниже.

2) получить список всех подкаталогов данного каталога (используется свойство GetFolder и далее возможности объекта Folder):

Set oFolders = fso1.GetFolder("C:\")

Set oSubfolders = oFolders.SubFolders

For Each oFolder In oSubFolders

strListFolders = strListFolders & oFolder.Name & vbCrLf

Next

MsgBox strListFolders

3) получить информацию о физическом размере диска (свойство объекта Drive TotalSize):

Set oDrive1 = fso1.GetDrive("C")

nSize = FormatNumber (oDrive1.TotalSize,0)

MsgBox nSize

4) получить информацию о размере свободного пространства (свойства объекта Drive FreeSpace и AvailableSpace; FreeSpace выводит информацию об физическом свободном пространстве, AvailableSpace - информацию о свободном пространстве, доступном текущему пользователю - с учетом дисковой квоты)

Set oDrive1 = fso1.GetDrive("C")

nSize = FormatNumber (oDrive1.TotalSize,0)

MsgBox nSize

5) скопировать каталог со всем содержимым (используется метод CopyFolder, true означает - перезаписывать содержимое, используется по умолчанию, поэтому можно не указывать)

fso1.CopyFolder "C:\Diagnostics", "d:\Diagnostics", true

Аналогично производится перемещение и удаление папок.

6) удалить все файлы с определенным именем (например, борьба с вирусами или компьютерными игрушками). Само удаление произвести несложно: для этого используется метод DeleteFile:

fso1.DeleteFile "C:\scandisk.log", True 'true означает, что удаляем в том числе и read-only файлы

Однако обычно нужно решить еще две задачи:

• обеспечить отсутствие run-time error, если проблемы с удаление файла (файл открыт и т.п.)

• подключиться к нужному каталогу

• пройти по всем каталогам и подкаталогам, удаляя данный файл.

Каждую из этих задача удобнее решать при помощи отдельных подпроцедур. Первая решается так:

Sub FileDelete(sFile)

On Error Resume Next

Fso1.DeleteFile (sFile)

If Err.Number <> 0 Then

WScript.Echo "Error deleting file: " & sFile

End If

End Sub

Для простоты мы выводим сообщение пользователю, однако в реальной работе лучше в случае возникновения ошибки писать протокол в текстовый файл для администратора (об этом позже).

Чтобы подключиться к нужному подкаталогу:

Function GetFolder (sFolder)

On Error Resume Next

Set GetFolder = Fso1.GetFolder (sFolder)

If Err.Number <> 0 Then

WScript.Echo "Error connecting to folder: " & sFolder

WScript.Quit Err.Number

End If

End Function

Чтобы пройтись по всем подкаталогам:

Sub RunSubFolders (objFolder)

If objFolder <> "\System Volume Information" Then

MainSub objFolder

For Each iFolder in objFolder.SubFolders

RunSubFolders iFolder

Next

End If

End Sub

Проверка на System Volume Information - потому что при обращении к нему возникает ошибка.

Теперь решаем нашу задачу:

sDir = "C:"

sFile = "lines.exe"

Set objDir = GetFolder (sDir)

RunSubFolders (objDir)

Sub MainSub (objDir)

For Each eFile in objDir.Files

If LCase(eFile.Name) = LCase(sFile) Then

FileDelete eFile

End If

Next

End Sub

Конечно, в реальной работе лучше протоколировать удаление всех файлов.

7) поменять атрибуты файла (например, скрыть важные файлы ил установить для них режим read-only).

Для подключения к существующему файлу лучше всего использовать специальную подпроцедуру GetFile (аналог GetFolder в предыдущем примере):

Function GetFile(sFile)

On Error Resume Next

Set GetFile = Fso1.GetFile(sFile)

If Err.Number <> 0 Then

WScript.Echo("Error Connecting to: " & sFile

WScript.Quit Err.Number

End If

End Function

Атрибуты файла определяются как битовая маска - значение свойства Attributes. Просмотреть возможные значения можно через справку по WSH 5.6, Attributes property.

Установить проще всего так (в нашем примере устанавливаем значение Read-Only):

Set gFile = GetFile ("C:\test1.txt")

gFile.Attributes = 1

8) прочесть информацию из текстового файле

Set TxtStream = fso1.OpenTextFile("\\london1\c$\test1.txt")

Do While Not (TxtStream.atEndOfStream)

Text = Text & TxtStream.ReadLine & vbCrlf

Loop

MsgBox Tex

Большие файлы настоятельно рекомендуется открывать на чтение в окне Internet Explorer тем же методом Navigate.

9) запись / добавление информации к текстовому файлу. Эта возможность используется очень часто - например, для протоколирования хода выполнения скрипта или фиксирования результатов обследования компьютеров пользователей. В некоторых ситуациях файл можно обрабатывать дальше - например, переслать его по электронной почте средствами CDO (об этом в следующих модулях) или средствами DTS положить на сервер баз данных.

Выглядит это так:

If Fso1.FileExists ("C:\test1.txt") Then

Set txtStreamOut = fso1.OpenTextFile("C:\test1.txt",8,True)

' "2" означает "открыть на добавление", True - писать в Unicode

txtStreamOut.WriteLine "Строка 1"

txtStreamOut.WriteLine "Строка 1"

Else

Set MyFile = fso1.CreateTextFile("C:\test1.txt")

MyFile.WriteLine "Строка 1"

MyFile.WriteLine "Строка 2"

End If

Ограничения WSH при работе с файловой системой:

WSH в принципе не умеет работать с двоичными файлами - только текстовыми;

при помощи WSH нельзя настроить разрешения и аудит для файлов (это можно сделать средствами WMI).

98

Многие дополнительные возможности работы в файловой системе можно получить при помощи утилит командной строки из Resource Kit:

associate - позволяет создать ассоциацию программы с расширением имени файла;

diruse - просмотреть информацию о используемом пространстве, включая файлы и каталоги, превышающие определенный размер;

diskmap - в командой стоке просмотреть информацию о размере физического диска и его геометрии;

diskuse - показать, сколько места на диске занимают файлы каждого пользователя (по владельцам)

dupfinder - найти повторяющиеся файлы на дисках;

fcopy и robocopy - утилиты надежного копирования файлов (даже если проблемы с сетью). fcopy использует Message Queuing, robocopy - свою службу

freedisk - возвращает объем свободного пространства на диске;

mcopy/mtc (эквиваленты copy и xcopy) - копирование с созданием протокола копирования;

qgrep - аналог Unix grep, поиск строки в указанном файле (файлах)

perms - выводит разрешения для указанного файла;

showacls - тоже выводит разрешения, но уже для файла, каталога или дерева каталогов, в более удобном формате;

subinacl - позволяет выводить информацию о разрешениях на файлы (а также ключи реестра и службы) и переносить разрешения с одного пользователя на другого;

where - ищет файлы в указанном вами месте;

xcacls - позволяет менять разрешения на файлы из командной строки.

Скопировать/перенести файлы с сохранением всех разрешений (например, на новый файл-сервер) позволяет обычный FAR (или стандартная утилита Microsoft XCOPY).

99

Очень часто возникает задача создания ярлыков на компьютерах всех пользователей для какого-либо документа/папки/программы/принтера/Web (Intranet) ресурса. WSH позволяет создавать как обычные ярлыки (*.lnk), так и web - *.url.

Как это сделать: вначале нам нужно разобраться с путем, по которому будет помещен созданный нами ярлык. Видимо, нас интересует рабочий стол пользователя, но его папка лежит в профиле пользователя, а он сам - где угодно. Придется использовать специальный прием - свойство объекта WScript.Shell SpecialFolders:

set oShell = WScript.CreateObject (“WScript.Shell”)

DesktopPath = oShell.SpecialFolders(“AllUsersDesktop”)

ProgramsPath = oShell.SpecialFolders(“Programs”)

Последняя строчка относится к меню Start -> Programs.

Через вшитые в VBScript константы можно обращаться к Windows, System (System32), Temp, через WScript.Shell - Desktop, StartMenu, Startup, Programs (все - для конкретного и нескольких пользователей), Favorites, NetHood, MyDocuments, Recent, SendTo, Fonts и кучу прочих мест.

Само создание ярлыка выглядит так:

set oShell = WScript.CreateObject (“WScript.Shell”)

Set oShortCut = oShell.CreateShortcut(“MyText.lnk”)

oShortCut.TargetPath = “\\Myserver\myFolder\doc1.txt”

oShortCut.Save ‘так будет создан в том же каталоге, где находится скрипт

Чтобы был создан на десктопе, создание скрипта производится так:

Set oShortCut = oShell.CreateShortcut(DeskTopPath & “\MyText.lnk”) ‘ и далее по тексту