Bagikan melalui


Menginstal sebagai Aplikasi Layanan

Selain berjalan sebagai executable server lokal (EXE), objek COM juga dapat mengemas dirinya sendiri untuk dijalankan sebagai aplikasi layanan saat diaktifkan oleh klien lokal atau jarak jauh. Layanan mendukung banyak fitur administratif yang berguna dan user interfaceâ€", termasuk mulai lokal dan jarak jauh, menghentikan, menjeda, dan memulai ulang, serta kemampuan untuk membuat server untuk berjalan di bawah akun pengguna dan stasiun jendela tertentu.

Objek yang ditulis sebagai layanan diinstal untuk digunakan oleh COM dengan menetapkan nilai LocalService di bawah kunci AppID-nya dan melakukan penginstalan layanan standar.

Kelas juga dapat dikonfigurasi untuk berjalan di bawah akun pengguna tertentu saat diaktifkan oleh klien jarak jauh tanpa ditulis sebagai aplikasi layanan. Untuk melakukan ini, kelas menginstal nama pengguna dan kata sandi yang akan digunakan saat SCM meluncurkan proses server lokalnya.

Ketika kelas dikonfigurasi dengan cara ini, panggilan ke CoRegisterClassObject dengan CLSID ini akan gagal kecuali proses diluncurkan oleh COM atas nama permintaan aktivasi yang sebenarnya. Dengan kata lain, kelas yang dikonfigurasi untuk dijalankan sebagai pengguna tertentu mungkin tidak terdaftar di bawah identitas lain.

Nama pengguna diambil dari nilai bernama RunAs di bawah kunci APPID kelas. Jika nama pengguna adalah "Pengguna Interaktif", kode kelas dijalankan dalam konteks keamanan pengguna yang saat ini masuk dan terhubung ke stasiun jendela interaktif.

Jika tidak, kata sandi diambil dari bagian tersembunyi dari registri yang hanya tersedia untuk administrator komputer dan ke sistem. Nama pengguna dan kata sandi kemudian digunakan untuk membuat sesi masuk tempat kode kelas dijalankan. Ketika diluncurkan dengan cara ini, kode kelas berjalan dengan desktop dan window-station sendiri dan tidak berbagi handel jendela, clipboard, atau elemen antarmuka pengguna lainnya dengan pengguna interaktif atau kelas lain yang berjalan di akun pengguna lain.

Server yang terdaftar baik dengan LocalService atau RunAs dapat mendaftarkan objek dalam tabel objek yang sedang berjalan untuk memungkinkan klien mana pun terhubung ke dalamnya. Untuk melakukannya, panggilan server ke IRunningObjectTable::Register harus mengatur bendera ROTFLAGS_ALLOWANYCLIENT. Pengaturan server bit ini harus memiliki nama yang dapat dieksekusi di bagian AppID dari registri yang merujuk ke AppID untuk yang dapat dieksekusi. Server "aktifkan sebagai pengaktif" (tidak terdaftar sebagai LocalService atau RunAs) mungkin tidak mendaftarkan objek dengan bendera ini.

Mendaftarkan Kelas di Penginstalan

Mendaftarkan Server EXE yang Sedang Berjalan

Mendaftarkan Objek di ROT

Pendaftaran Mandiri