Bagikan melalui


Menginisialisasi COM untuk Aplikasi WMI

Langkah pertama dalam menyambungkan ke WMI adalah menyiapkan panggilan COM ke CoInitializeEx dan CoInitializeSecurity.

Contoh kode dalam topik ini memerlukan referensi berikut dan pernyataan #include untuk dikompilasi dengan benar.

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")

Prosedur berikut menjelaskan cara menginisialisasi COM dari aplikasi klien.

Untuk menginisialisasi COM dari aplikasi klien

  1. Menginisialisasi COM dengan panggilan ke CoInitializeEx.

    Memanggil CoInitializeEx adalah prosedur standar untuk menyiapkan antarmuka COM. Oleh karena itu, WMI tidak mengharuskan Anda mengamati prosedur tambahan apa pun saat memanggil CoInitializeEx. Untuk informasi selengkapnya, lihat COM.

    Contoh kode berikut menjelaskan cara memanggil 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;
    }
    
  2. Atur tingkat keamanan COM umum dengan panggilan ke antarmuka CoInitializeSecurity .

    CoInitializeSecurity adalah fungsi standar yang harus Anda panggil saat menyiapkan antarmuka COM untuk proses. Panggil CoInitializeSecurity jika Anda ingin mengatur pengaturan keamanan default untuk layanan autentikasi, peniruan, atau autentikasi untuk seluruh proses. Untuk informasi selengkapnya, lihat Mengatur Keamanan Proses Aplikasi Klien. Jika Anda ingin mengatur atau mengubah keamanan untuk proksi tertentu, Anda harus memanggil CoSetProxyBlanket. Gunakan CoSetProxyBlanket setiap kali Anda harus mengatur atau mengubah keamanan COM saat berjalan di dalam proses lain di mana Anda tidak dapat mengontrol pengaturan keamanan default untuk layanan autentikasi, peniruan, atau autentikasi. Untuk informasi selengkapnya, lihat Mengatur Tingkat Keamanan pada Koneksi WMI dan Mengatur Keamanan di IWbemServices dan Proksi Lainnya.

    WMI memiliki beberapa masalah keamanan yang harus Anda waspadai saat memprogram aplikasi klien WMI. Untuk informasi selengkapnya, lihat Mengatur Keamanan Proses Aplikasi Klien.

    Contoh kode berikut menjelaskan cara memanggil CoInitializeSecurity untuk mengatur keamanan COM pada proses.

    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.
    }
    

Setelah Anda menginisialisasi COM, langkah Anda selanjutnya adalah membuat koneksi ke namespace WMI. Untuk informasi selengkapnya, lihat Membuat Koneksi ke Namespace WMI.

Membuat Aplikasi WMI Menggunakan C++

Akses ke Namespace WMI