'Выполняем SQL-запрос для подключения к классу
set colSoftware = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
'Вызываем метод для завершения сеанса пользователя. Метод для своей
'работы использует один параметр (точнее, два, но второй параметр на данный
'момент не используется) – флаг, указывающий на необходимое действие.
'В нашем случае флаг равен 0, что говорит о необходимости завершения сеанса
'пользователя .Для осуществления возможности перезагрузки или выключения
'компьютера необходимо, чтобы инициирующий перезагрузку процесс обладал
'правом SE_SHUTDOWN_NAME. Остальные значения флага определяются от бита,
'установленного в нем. Биты описаны следующим образом: "Завершение работы",
'"Перезагрузка", "Принудительно", "Питание выключено"
for each objSoftware in colSoftware
objSoftware.Win32Shutdown 0
next
Как правило, администраторы локального компьютера обладают правами на завершение сеанса. Другие же действия по умолчанию возможны от имени системы.
Кроме метода Win32 Shutdown, класс Win32_OperatingSystem описывает еще три метода. Если вызывающий процесс обладает правом SE_SHUTDOWN_NAME, то выполняются следующие действия.
■ Reboot — компьютер будет перезагружен. Метод не имеет параметров, но при успешном выполнении возвращает 0.
■ Shutdown — компьютер будет выключен. Метод не имеет параметров, но при успешном выполнении возвращает 0.
■ SetDateTime — будет установлено системное время компьютера. Данный метод для своей работы требует один параметр, определяющий новое время, которое нужно установить (имеет тип DateTime, имеющий довольно странный формат, например установка параметра равным "00000000000000.000000:000" обнуляет время).
Получение сведений об установленных на компьютере программах
Это еще одна интересная возможность WMI, которой можно воспользоваться. Другими словами, можно удаленно узнавать о том, установлена ли на компьютере какая-либо программа, когда она была установлена, а также просмотреть весь список установленных на компьютере программ. Для примера попробуем создать текстовый файл, содержащий сведения об установленных на компьютере программах, их описании, а также дате установки. В приведенном ниже коде будет использоваться еще одна возможность WMI — получение сведений непосредственно из ее базы данных.
Листинг 11.6. Создание списка установленных на компьютере программ
'Объявляем объект для доступа к файловой системе, а потом создаем файл,
'в который будут записываться сведения об установленных на компьютере
'программах (например, файл Program_list.txt в каталоге e:\)
set objFSO = CreateObject("Scripting.FIleSystemObject")
set objTextFile = objFSO.CreateTextFile("e:\Program_list.txt", True)
'Подключаемся к пространству имен root\cimv2
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!\root\cimv2")
'Выполняем SQL-запрос на получение всех записей из таблицы Win32_Product
'Конечно, можно было бы использовать SQL-запрос для получения только
'отдельных записей или колонок таблицы, но для примера нам такой сложный
'запрос не нужен
set colSoftware = objWMIService.ExecQuery("Select * from Win32_Product")
'Записываем в созданный ранее файл информацию об установленных программах.
'Здесь мы пользуемся циклом, выполняемым для каждого элемента массива
'colSoftware. После окончания записи закрываем файл
for each objSoftware in colSoftware
objTextFile.WriteLine "Программа: " & objSoftware.Caption & " (описание программы:" & objSoftware.Description & ") была установлена: " & objSoftware.InstallDate2
next
objTextFile.Close
После выполнения данного сценария в указанном каталоге появится текстовый файл с описанием установленных программ. При этом, кроме названия программы, ее описания и даты установки, можно получить и другую информацию об установленных программах. Например, можно воспользоваться такими столбцами:
■ objSoftware.IdentifyiungNumber — серийный номер программы;
■ objSoftware.InstallLocation — каталог, в который установлена программа;
■ objSoftware.Name — название программы, как правило, не отличается от objSoftware.Caption;
■ objSoftware.Vendor — производитель программы;
■ objSoftware.Version — версия программы.
Получение сведений о компьютере
С помощью базы данных CIMOM можно также определить конфигурацию операционной системы. Метод определения конфигурации подобен методу определения установленных на компьютере компонентов, поэтому будет рассмотрена лишь часть кода, с помощью которой выполняется обращение к базе данных.
Читать дальше