После ввода такого дополнительного правила SRP на машине нельзя будет запускать сценарии с расширением vbs. При попытке выполнения VBScript- сценария будет выведено диалоговое окно с информацией о невозможности его запуска (рис. 4.30).
Также в разделе Дополнительные правила (Additional rules) имеется возможность создать правило для хеша (хеш — Это серия байтов фиксированной длины, которая рассчитывается по специальному алгоритму и однозначно идентифицирует содержимое файла). С помощью этого правила можно запретить выполнение файла, имеющего заданный хеш. Однако для сценариев, в отличие от компилированных исполняемых модулей, это не является подходящим ограничением, т.к. хеш файла со сценарием можно изменить простым добавлением пустой строки в текст сценария.
Рис. 4.30. Блокировка сценариев WSH с помощью дополнительных правил SRP
Блокировка сценариев с заданной подписью
Еще одним возможным ограничением является запрет на выполнение файлов, подписанных с помощью определенного цифрового сертификата ("Попов ненадежный", например).
Рис. 4.31. Диалоговое окно для создания нового правила для сертификата
Для этого нужно в разделе Дополнительные правила (Additional rules) создать новое правило для сертификата (Certificate Rule) (пункт Создать правило для сертификата (New Certificate Rule) в меню Действие (Action)). В диалоговом окне Создание правила для сертификата (New Certificate Rule) в качестве имени субъекта сертификата (Certificate subject name) укажем с помощью кнопки Обзор (Browse) файл C:\Script\Попов.cer (процесс создания этого файла описан в разд. "Управление сертификатами с помощью ММС"), а в раскрывающемся списке Уровень безопасности (Security level) выберем значение "Не разрешено" ("Disallowed") — рис. 4.31.
После ввода этого дополнительного правила SRP на машине нельзя будет запускать никакие исполняемые файлы (сценарии WSH в том числе), которые подписаны с использованием сертификата "Попов ненадежный".
Глава 5
Доступ из сценариев к файловой системе
Сценарии WSH позволяют получить полный доступ к файловой системе компьютера, в отличие от JScript- или VBScript-сценариев, внедренных в HTML-страницы, где в зависимости от уровня безопасности, который устанавливается в настройках браузера, те или иные операции могут быть запрещены.
Выполнение основных операций с файловой системой
Для работы с файловой системой из сценариев WSH предназначены восемь объектов, главным из которых является FileSystemObject. С помощью методов объекта FileSystemObject можно выполнять следующие основные действия:
□ копировать или перемещать файлы и каталоги;
□ удалять файлы и каталоги;
□ создавать каталоги;
□ создавать или открывать текстовые файлы;
□ создавать объекты Drive, Folder и File для доступа к конкретному диску, каталогу или файлу соответственно.
С помощью свойств объектов Drive, Folder и File можно получить детальную информацию о тех элементах файловой системы, с которыми они ассоциированы. Объекты Folder и File также предоставляют методы для манипулирования файлами и каталогами (создание, удаление, копирование, перемещение); эти методы в основном копируют соответствующие методы объекта FileSystemObject.
Кроме этого, имеются три объекта-коллекции: Drives, Folders и Files. Коллекция Drives содержит объекты Drive для всех имеющихся в системе дисков, Folders — объекты Folder для всех подкаталогов заданного каталога, Files — объекты File для всех файлов, находящихся внутри определенного каталога.
Наконец, из сценария можно читать информацию из текстовых файлов и записывать в них данные. Методы для этого предоставляет объект TextStream.
В табл. 5.1 кратко описано, какие именно объекты, свойства и методы могут понадобиться для выполнения наиболее часто используемых файловых операций.
Таблица 5.1. Выполнение основных файловых операций
| Операция | Используемые объекты, свойства и методы |
|---|---|
| Получение сведений об определенном диске (тип файловой системы, метка тома, общий объем и количество свободного места и т.д.) | Свойства объекта Drive. Сам объект Drive создается с помощью метода GetDrive объекта FileSystemObject |
| Получение сведений о заданном каталоге или файле (дата создания или последнего доступа, размер, атрибуты и т.д.) | Свойства объектов Folder и File. Сами эти объекты создаются с помощью методов GetFolder и GetFile объекта FileSystemObject |
| Проверка существования определенного диска, каталога или файла | Методы DriveExists, FolderExists и FileExists объекта FileSystemObject |
| Копирование файлов и каталогов | Методы CopyFile и CopyFolder объекта FileSystemObject, а также методы File.Сору и Folder.Сору |
| Перемещение файлов и каталогов | Методы MoveFile и MoveFolder объекта FileSystemObject или методы File.Move и Folder.Move |
| Удаление файлов и каталогов | Методы DeleteFile и DeleteFolder объекта FileSystemObject или методы File.Delete и Folder.Delete |
| Создание каталога | Методы FileSystemObject.CreateFolder или Folders.Add |
| Создание текстового файла | Методы FileSystemObject.CreateTextFile или Folder.CreateTextFile |
| Получение списка всех доступных дисков | Коллекция Drives, содержащаяся в свойстве FileSystemObject.Drives |
| Получение списка всех подкаталогов заданного каталога | Коллекция Folders, содержащаяся в свойстве Folder.SubFolders |
| Получение списка всех файлов заданного каталога | Коллекция Files, содержащаяся в свойстве Folder.Files |
| Открытие текстового файла для чтения, записи или добавления | Методы FileSystemObject.CreateTextFile или File.OpenAsTextStream |
| Чтение информации из заданного текстового файла или запись ее в него | Методы объекта TextStream |