KnigaRead.com/

Андрей Попов - Windows Script Host для Windows 2000/XP

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Андрей Попов, "Windows Script Host для Windows 2000/XP" бесплатно, без регистрации.
Перейти на страницу:

else SInfo+="Файл не доступен для чтенияn";

if (File.Writeable) SInfo+="Файл доступен для записиn"

else SInfo+="Фaйл не доступен для записиn";

Сформированная символьная переменная SInfo выводится на экран с помощью метода Echo() объекта WScript:

WScript.Echo(SInfo);

Полностью текст сценария FileInfoWMI.js приведен в листинге 11.20.

Листинг 11.20. Доступ к свойствам файла с помощью WMI

/*******************************************************************/

/* РРјСЏ: FileInfoWMI.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                   */

/* Описание: Доступ к свойствам файла с помощью WMI                */

/*******************************************************************/

//Объявляем переменные

var

 File,  //Объект класса CIM_DataFile

 SInfo; //Строка для вывода на экран

//Функция для форматирования символьного представления даты

function StrDate(d) {

В var s;

В s=d.substr(6,2)+"."+d.substr(4,2)+"."+d.substr(0,4)

В return s;

}

/*************  Начало *********************************************/

//Создаем объект класса CIM_DataFile для файла C:boot.ini

File=GetObject("winMgmts:CIM_DataFile.Name='C:\boot.ini'")

//Рнициализируем символьную переменную SInfo

SInfo="Рнформация Рѕ файле "+File.Name+"nn";

//Рзвлекаем свойства файла

SInfo+="РРјСЏ:tt"+File.Name+"n";

SInfo+="Путь:tt"+File.Path+"n";

SInfo+="Диск:tt"+File.Drive+"n";

SInfo+="Размер:tt"+File.FileSize+"n";

SInfo+="Создан:tt"+StrDate(File.CreationDate)+"n";

SInfo+="Рзменен:tt"+StrDate(File.LastModified)+"n";

SInfo+="Открыт:tt"+StrDate(File.LastAccessed)+"n";

SInfo+="Короткое имя:t"+File.EightDotThreeFileName+"n";

SInfo+="Расширение:t"+File.Extension+"n";

SInfo+="РўРёРї:t"+File.FileType+"n";

//Определяем атрибуты файла

SInfo+="n";

SInfo+="Атрибуты:n";

if (File.Archive) SInfo+="tАрхивныйn";

if (File.Hidden) SInfo+="tСкрытыйn";

if (File.System) SInfo+="tСистемныйn";

if (File.Compressed) SInfo+="tСжат с помощью "+File.CompressionMethod+"n";

if (File.Encrypted) SInfo+="tЗашифрован с помощью "+File.EncryptionMethod+"n";

//Определяем, доступен ли файл для чтения и записи

SInfo+="n";

if (File.Readable) SInfo+="Файл доступен для чтенияn"

else SInfo+="Файл не доступен для чтенияn";

if (File.Writeable) SInfo+="Файл доступен для записиn"

else SInfo+="Файл не доступен для записиn";

//Выводим сформированную строку на экран

WScript.Echo(SInfo);

/*************  Конец *********************************************/

Список всех запущенных процессов 

В следующих двух примерах мы будем работать с запущенными в операционной системе процессами.

Создадим сценарий ListProcesses.js, который будет выводить на экран имена всех запущенных процессов (рис. 11.29).

Рис. 11.29. Список всех запущенных в системе процессов


Первое, что необходимо сделать в сценарии — подключиться к службе Windows Management service, т.е. создать корневой элемент WMI, который содержит в себе все остальные. 

Для этого в качестве параметра функции GetObject() указывается "winMgmts:"; в нашем примере мы соединяемся с WMI внутри блока try, что позволяет обработать возможные исключительные ситуации:

try {

 //Соединяемся с WMI

В WMI=GetObject("winMgmts:");

} catch (e) {

 //Обрабатываем возможные ошибки

В if (Рµ != 0) {

  //Выводим сообщение об ошибке

  Mess="Ошибка при соединении с WMI";

  WshShell.Popup(Mess, 0, "Запущенные процессы", vbCritical);

  //Выходим из сценария

В В WScript.Quit();

В }

}

Запущенным процессам соответствует класс Process схемы Win32. Коллекция всех процессов создается с помощью выполнения следующего SQL-запроса:

SELECT * FROM Win32 Process

Таким образом, можно сказать, что класс Win32_Process является аналогом таблицы базы данных; сам запрос выполняется с помощью метода ExecQuery():

Processes=new Enumerator(WMI.ExecQuery("SELECT * FROM Win32_Process"));

После создания коллекции мы просматриваем в цикле while все ее элементы, каждый из которых соответствует одному процессу, и добавляем имя процесса, хранящееся в свойстве Name, к переменной SList:

//Рнициализируем строку SList

SList="Запущенные процессыnn";

//Цикл по всем элементам коллекции

while (!Processes.atEnd()) {

В //Рзвлекаем текущий элемент коллекции (запущенный процесс)

В Process=Processes.item();

 //Формируем строку с именами процессов

В SList+=Process.Name+"n";

 //Переходим к следующему элементу коллекции

В Processes.moveNext();

}

После выхода из цикла переменная SInfo выводится на экран с помощью метода Echo() объекта WScript:

WScript.Echo(SInfo);

Полностью текст сценария ListProcesses.js приведен в листинге 11.21.

Листинг 11.21. Вывод на экран списка всех запущенных процессов

/********************************************************************/

/* РРјСЏ: ListProcesses.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                    */

/* Описание: Вывод на экран списка всех запущенных на локальной     */

/*           рабочей станции процессов                              */

/********************************************************************/

var

 WMI,       //Экземпляр WMI

 Processes, //Коллекция процессов

 Process,   //Экземпляр коллекции

 SList;     //Строка для вывода на экран

//Рнициализируем константы для диалоговых РѕРєРѕРЅ

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*