Читаем без скачивания Недокументированные и малоизвестные возможности Windows XP - Роман Клименко
Шрифт:
Интервал:
Закладка:
■ 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)
'Подключаемся к пространству имен rootcimv2
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!rootcimv2")
'Выполняем 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 можно также определить конфигурацию операционной системы. Метод определения конфигурации подобен методу определения установленных на компьютере компонентов, поэтому будет рассмотрена лишь часть кода, с помощью которой выполняется обращение к базе данных.
Листинг 11.7. Получение сведений об операционной системеset objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}! rootcimv2")
set colOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
for each objOperatingSystem in colOS
objTextFile.WriteLine objOperatingSystem.Name
next
Именно так можно подключиться к базе данных сведений об операционной системе и записать их в файл. Но к каким столбцам таблицы можно получить доступ (кроме используемого в листинге столбца Name, который содержит имя операционной системы и путь к папке Windows)? Ниже перечислены некоторые из таких столбцов (в контексте инструментария управления WMI они называются свойствами).
■ BootDevice — указывает имя тома, из которого загружается операционная система.
■ CodeSet — указывает кодовую страницу, используемую операционной системой (как написано в MFL-файле, кодовая страница содержит таблицу символов, применяемую операционной системой для преобразования строк на различных языках).
■ DataExecutionPrevention_Available — если данное свойство возвращает значение true, то оборудование, установленное на компьютере, поддерживает технологию предотвращения выполнения данных Windows (DEP). Более подробные сведения об этой технологии можно найти в файле cimwin32.mfl.
■ LargeSystemCache — указывает, для каких операций выполняется оптимизация памяти. Если свойство возвращает значение 0, то оптимизация памяти выполняется для повышения производительности работающих программ. Если же возвращается значение 1, то оптимизация памяти выполняется для повышения производительности работы операционной системы.
ПРИМЕЧАНИЕ
Свойство использует для определения метода оптимизации уже рассмотренный ранее параметр реестра LargeSystemCache, расположенный в ветви HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management. Если его значение равно 1, то возвращается значение 1.
■ Version — содержит номер версии операционной системы Windows.
■ ServicePackMajorVersion — основная версия установленного пакета обновлений.
■ ServicePackMinorVersion — дополнительная версия установленного пакета обновлений.
■ Manufacturer — имя производителя операционной системы.
■ WindowsDirectory — каталог Windows.
■ Locale — код локализации (419 для русской версии, 409 для английской).
■ FreePhysicalMemory — свободный объем жесткого диска.
■ FreeVirtualMemory — свободный объем виртуальной памяти.
■ TotalVirtualMemorySize — общий объем виртуальной памяти.
Здесь были рассмотрены лишь 13 свойств класса Win32_OperatingSystem, на самом же деле данный класс имеет 35 свойств. Не имеет смысла описывать остальные свойства, так как все они отлично описаны в стандартном файле cimwin32.mfl, расположенном в каталоге %systemroot%SYSTEM32wbem, а автор не брал на себя задачу создания книжного аналога данного файла. Поэтому за дополнительной информацией обращайтесь к файлу cimwin32.mfl (просто поищите в нем строку Win32_OperatingSystem).
Кроме Win32_OperatingSystem, для описания компьютера можно использовать следующие классы.
■ Win32_ComputerSystem — содержит следующие свойства, описывающие работающий компьютер.
• AutomaticResetBootOption — если данное свойство возвращает значение false, то при возникновении аварийной остановки отображается «синий экран смерти» (BSOD). Если же значение равно true, то компьютер автоматически перезагружается.
• BootupState — определяет способ загрузки операционной системы. На пример, если данное свойство возвращает значение Normal Boot, то операционная система была загружена в обычном режиме. Возможны следующие значения: Normal boot, Fail-safe boot, Fail-safe with network boot.
• Name — имя компьютера.
• NumberOfProcessors — возвращает количество процессоров, установленных на данном компьютере.
• Manufacturer — имя компании, собиравшей компьютер.
• Model — модель BIOS компьютера (поддерживает ACPI или нет).
• CurrentTimeZone — идентификатор текущей зоны часового пояса.
• TotalPhysicalMemory — общий объем физической памяти.
ПРИМЕЧАНИЕ
Класс содержит 39 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%SYSTEM32wbem. Просто поищите в нем строку Win32_ComputerSystem.
■ Win32_Processor — определяет один экземпляр процессора (для многопроцессорных систем существует несколько экземпляров данного класса) и содержит следующие свойства:
• Description — описание процессора, установленного на компьютере;
• Architecture — тип процессора, установленного на компьютере;
• CurrentVoltage — возвращает текущее напряжение, используемое процессором (определяется первыми 6 байтами, умноженными на 10);
• L2CacheSize — возвращает размер кэша второго уровня для данного процессора;
• LoadPercentage — возвращает среднюю величину загруженности процессора в течение одной секунды.
ПРИМЕЧАНИЕ
Класс содержит 16 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%SYSTEM32wbem. Просто поищите в нем строку Win32_Processor.
■ Win32_BIOS — указывает атрибуты служб ввода/вывода, установленных на компьютере и содержит следующие свойства:
• Version — описание версии BIOS материнской платы;
• CurrentLanguage — возвращает имя текущего языка BIOS.
ПРИМЕЧАНИЕ
Класс содержит 11 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%SYSTEM3wbem.