Bagikan melalui


Mendaftarkan Kelas di Penginstalan

Jika kelas dimaksudkan untuk tersedia untuk klien kapan saja, seperti kebanyakan aplikasi, Anda biasanya mendaftarkannya melalui program penginstalan dan penyiapan. Ini berarti menempatkan informasi tentang aplikasi ke dalam registri, termasuk bagaimana dan di mana objeknya akan diinstansiasi. Informasi ini harus didaftarkan untuk semua CLSID. Informasi lain bersifat opsional. Alat seperti Regsvr32 memudahkan untuk menulis program penyiapan yang mendaftarkan server saat penginstalan.

Jika Anda tidak mengandalkan default sistem, ada dua kunci penting dalam registri: CLSID dan AppID. Di antara potongan-potongan informasi penting di bawah kunci ini adalah bagaimana objek akan diinstansiasi. Objek dapat ditetapkan sebagai dalam proses, lokal di luar proses, atau jarak jauh yang tidak diproses.

Di bawah kunci AppID ada beberapa nilai yang menentukan informasi khusus untuk aplikasi tersebut. Di antaranya adalah RemoteServerName dan ActivateAtStorage, yang keduanya dapat digunakan untuk mengizinkan klien membuat objek, dengan klien tidak memiliki pengetahuan bawaan tentang lokasi server. (Untuk informasi selengkapnya tentang instansiasi jarak jauh, lihat Menemukan Fungsi Pembantu Pembuatan Objek Jarak Jauh dan Pembuatan Instans.)

Server juga dapat diinstal sebagai layanan, atau untuk berjalan di bawah akun pengguna tertentu. Untuk informasi selengkapnya, lihat Menginstal sebagai Aplikasi Layanan.

Server atau objek ROT yang bukan layanan atau berjalan di bawah akun pengguna tertentu dapat disebut sebagai server "aktifkan sebagai aktivator". Untuk server ini, konteks keamanan dan stasiun jendela/desktop klien harus cocok dengan server. Klien yang mencoba menyambungkan ke server jarak jauh dianggap memiliki stasiun jendela/desktop NULL , sehingga hanya konteks keamanan server yang dibandingkan dalam instans ini. (Untuk informasi selengkapnya tentang SID, lihat Keamanan dalam COM.) COM menyimpan cache stasiun jendela/desktop proses ketika proses pertama kali terhubung ke layanan COM terdistribusi. Oleh karena itu, klien dan server COM tidak boleh mengubah stasiun jendela atau desktop utas proses mereka setelah memanggil CoInitialize atau CoInitializeEx.

Ketika kelas terdaftar sebagai dalam proses, panggilan ke CoGetClassObject untuk membuat objek kelasnya secara otomatis diteruskan oleh COM ke fungsi DllGetClassObject, yang harus diterapkan kelas untuk memberi objek panggilan penunjuk ke objek kelasnya.

Kelas yang diterapkan dalam executable dapat menentukan bahwa COM harus menjalankan prosesnya dan menunggu proses mendaftarkan antarmuka IClassFactory objek kelas mereka melalui panggilan ke fungsi CoRegisterClassObject.

Kunci Registri COM

Menginstal sebagai Aplikasi Layanan

Mendaftarkan Server EXE yang Sedang Berjalan

Mendaftarkan Komponen

Mendaftarkan Objek di ROT

Pendaftaran Mandiri