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

4.1.6 Работа с файловой системой

Для работы с файловой системой в WMI существуют следующие классы:

Win32_LogicalDisk – для получения информации о логических дисках;

CIM_DataFile – для работы с файлами;

Win32_Directory – для работы с папками.

Основными свойствами класса Win32_LogicalDisk являются:

DeviceID – идентификатор логического диска;

DriveType – тип логического диска:

2 – сменный диск, 3 – жесткий диск, 4 – сетевой диск,

5 – CD-ROM, 6 – RAM диск;

FileSystem – тип файловой системы;

FreeSpace – объем доступного дискового пространства.

Основные свойства класса CIM_DataFile следующие:

CreationDate – дата и время создания файла;

Drive – диск, на котором хранится файл;

Extension – расширение;

FileName – простое имя файла без расширения;

FileSize – размер файла;

FileType – тип файла, ассоциированный с его расширением;

FSName – тип файловой системы;

LastAccessed – дата и время последнего доступа к файлу;

LastModified – дата и время последней модификации файла;

Name – полное имя файла;

Path – путь.

Для копирования, переименования и удаления файла класс CIM_DataFile содержит методы Copy(FileName), Rename(FileName), и Delete() соответственно.

Класс Win32_Directory содержит аналогичные свойства и методы, что и перечисленные выше свойства и методы класса CIM_DataFile.

4.2 Создание WMI приложений на C++

4.2.1 Введение

Создание на C++ приложений, в которых используются возможности WMI, является более сложной задачей по сравнению с использованием WMI в сценариях, написанных на скриптовых языках (VBScript или JScript). Это связано с тем, что в приложениях на C++ необходимо выполнить инициализацию COM, подключение и настройку WMI протоколов, и обеспечить корректное завершение приложения. Однако C++ имеет большую мощность и гибкость чем скриптовые языки. Таким образом, скриптовые языки предпочтительнее использовать при решении простых задач, для более серьезных приложений предпочтительнее использовать С++.

Любое WMI приложение должно содержать следующие части:

  1. Инициализация COM.

  2. Создание подключения к пространству имен WMI.

  3. Установка уровней безопасности для WMI подключения.

  4. Реализация функциональности приложения.

  5. Очистка и корректное завершение WMI приложения.

Рассмотрим каждую из этих частей.

4.2.2 Инициализация com

Так как WMI базируется на технологии COM, для доступа к WMI необходимо выполнить вызовы функций CoInitializeEx и CoInitializeSecurity.

Вызов CoInitializeEx это стандартная функция для установки COM интерфейса. Следующий пример (листинг 8) показывает вызов CoInitializeEx.

Листинг 8. Пример вызова функции CoInitializeEx:

HRESULT hr;

hr = CoInitializeEx(0, COINIT_MULTITHREADED);

if (FAILED(hr))

{

cout << "Failed to initialize COM library."

<< "Error code = 0x"

<< hex << hr << endl;

return hr;

}

Функция CoInitializeSecurity вводит автоматические настройки безопасности. Эти установки применяются ко всем импортируемым и экспортируемым ссылкам на объекты, за исключением явно переопределенных с использованием дополнительных вызовов API-функций. Следующий пример (листинг 9) показывает, как выполнять вызов CoInitializeSecurity.

Листинг 9. Пример вызова функции CoInitializeSecurity:

hr = CoInitializeSecurity(

NULL, // Security descriptor

-1, // COM negotiates authentication service

NULL, // Authentication services

NULL, // Reserved

RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication

// level for proxies

RPC_C_IMP_LEVEL_IMPERSONATE,// Default Impersonation

// level for proxies

NULL, // Authentication info

EOAC_NONE, // Additional capabilities

// of the client or server

NULL); // Reserved

if (FAILED(hr))

{

cout << "Failed to initialize security.

<< "Error code = 0x"

<< hex << hr << endl;

CoUninitialize();

return hr; // Program has failed.

}

После инициализации COM, следующим шагом является создания подключения к пространству имен WMI.