Tabel ServiceInstall
Tabel ServiceInstall digunakan untuk menginstal layanan dan memiliki kolom berikut.
Kolom | Jenis | Kunci | Dapat diubah ke null |
---|---|---|---|
ServiceInstall | Pengidentifikasi | Y | N |
Nama | Diformat | N | N |
DisplayName | Diformat | N | Y |
ServiceType | Bilangan Bulat Ganda | N | N |
StartType | Bilangan Bulat Ganda | N | N |
ErrorControl | Bilangan Bulat Ganda | N | N |
LoadOrderGroup | Diformat | N | Y |
Dependensi | Diformat | N | Y |
StartName | Diformat | N | Y |
Kata sandi | Diformat | N | Y |
Argumen | Diformat | N | Y |
Komponen_ | Pengidentifikasi | N | N |
Deskripsi | Diformat | N | Y |
Kolom
-
ServiceInstall
-
Ini adalah kunci primer untuk tabel.
-
Nama
-
Kolom ini adalah string yang memberi nama layanan untuk diinstal. String memiliki panjang maksimum 256 karakter. Database manajer kontrol layanan mempertahankan kasus karakter dalam nama layanan, tetapi perbandingan nama layanan tidak peka huruf besar/kecil. Garis miring (/) dan garis miring terbelakang (\) adalah karakter nama layanan yang tidak valid.
-
Displayname
-
Kolom ini adalah string yang dapat dilokalkan yang digunakan program antarmuka pengguna untuk mengidentifikasi layanan. String memiliki panjang maksimum 256 karakter. Manajer kontrol layanan mempertahankan kasus nama tampilan, tetapi perbandingan nama tampilan tidak peka huruf besar/kecil.
-
ServiceType
-
Kolom ini adalah sekumpulan bendera bit yang menentukan jenis layanan. Salah satu jenis layanan berikut harus ditentukan di kolom ini.
Jenis layanan Nilai Deskripsi SERVICE_WIN32_OWN_PROCESS 0x00000010 Layanan Microsoft Win32 yang menjalankan prosesnya sendiri. SERVICE_WIN32_SHARE_PROCESS 0x00000020 Layanan Win32 yang berbagi proses. SERVICE_INTERACTIVE_PROCESS 0x00000100 Layanan Win32 yang berinteraksi dengan desktop. Nilai ini tidak dapat digunakan sendiri dan harus ditambahkan ke salah satu dari dua jenis sebelumnya. Kolom StartName harus diatur ke LocalSystem atau null saat menggunakan bendera ini. Jenis layanan berikut ini tidak didukung.
Jenis layanan Nilai Deskripsi SERVICE_KERNEL_DRIVER 0x00000001 Layanan pengemudi. SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Layanan driver sistem file. -
StartType
-
Kolom ini adalah sekumpulan bendera bit yang menentukan kapan memulai layanan. Salah satu jenis mulai layanan berikut harus ditentukan dalam kolom ini.
Jenis mulai layanan Nilai Deskripsi SERVICE_AUTO_START 0x00000002 Layanan dimulai selama startup sistem. SERVICE_DEMAND_START 0x00000003 Layanan dimulai ketika manajer kontrol layanan memanggil fungsi StartService . SERVICE_DISABLED 0x00000004 Menentukan layanan yang tidak dapat lagi dimulai. Pemasang Windows tidak dapat menggunakan opsi SERVICE_BOOT_START dan SERVICE_SYSTEM_START.
-
ErrorControl
-
Kolom ini menentukan tindakan yang diambil oleh program startup jika layanan gagal dimulai selama startup. Nilai-nilai ini memengaruhi peristiwa ServiceControl StartService untuk layanan yang diinstal. Salah satu bendera kontrol kesalahan berikut harus ditentukan dalam kolom ini.
Menambahkan konstanta msidbServiceInstallErrorControlVital (nilai = 0x08000) ke bendera dalam tabel berikut menentukan bahwa penginstalan keseluruhan harus gagal jika layanan tidak dapat diinstal ke dalam sistem.
Bendera kontrol kesalahan Nilai Tindakan program startup SERVICE_ERROR_IGNORE 0x00000000 Mencatat kesalahan dan melanjutkan operasi startup. SERVICE_ERROR_NORMAL 0x00000001 Mencatat kesalahan, menampilkan kotak pesan dan melanjutkan operasi startup. SERVICE_ERROR_CRITICAL 0x00000003 Mencatat kesalahan jika memungkinkan dan sistem dimulai ulang dengan konfigurasi terakhir yang diketahui baik. Jika konfigurasi terakhir yang diketahui baik sedang dimulai, operasi startup gagal. -
LoadOrderGroup
-
Kolom ini berisi string yang menamai grup pengurutan beban di mana layanan ini adalah anggota. Tentukan null atau string kosong jika layanan bukan milik grup.
-
Dependensi
-
Kolom ini adalah daftar nama layanan atau grup pengurutan beban yang harus dimulai sistem sebelum layanan ini. Pisahkan nama dalam daftar menurut Nulls. Jika layanan tidak memiliki dependensi, tentukan Null atau string kosong. Gunakan sintaks [~] untuk menyisipkan Null. Dependensi pada grup berarti bahwa layanan ini dapat berjalan jika setidaknya satu anggota grup berjalan setelah upaya untuk memulai semua anggota grup.
Misalnya, untuk mengharuskan sistem memulai service1 dan service2, sebelum memulai layanan yang tercantum di kolom ServiceInstall, masukkan service1[~]service2[~][~] ke dalam kolom Dependensi. Pengidentifikasi service1 dan service2 harus terjadi di kunci primer tabel atau menjadi nama layanan yang sudah diinstal.
Anda harus mengawali nama grup dengan + sehingga dapat dibedakan dari nama layanan. Untuk mengharuskan sistem memulai service1 dan setidaknya satu anggota grup pemesanan MyGroup sebelum memulai layanan yang tercantum di kolom ServiceInstall, masukkan service1[~]+MyGroup[~][~].
-
StartName
-
Layanan ini masuk sebagai nama yang diberikan oleh string di kolom ini. Jika jenis layanan SERVICE_WIN32_OWN_PROCESS gunakan nama akun dalam formulir: DomainName\UserName. Jika akun milik domain bawaan, akun diizinkan untuk menentukan .\UserName. Akun LocalSystem harus digunakan jika jenis layanan SERVICE_WIN32_SHARE_PROCESS atau SERVICE_INTERACTIVE_PROCESS. Fungsi CreateService menggunakan akun LocalSystem jika StartName ditentukan sebagai null dan sebagian besar layanan oleh karena itu membiarkan kolom ini kosong.
-
Password
-
String ini adalah kata sandi untuk nama akun yang ditentukan di kolom StartName. Perhatikan bahwa pengguna harus memiliki izin untuk masuk sebagai layanan. Layanan tidak memiliki kata sandi jika StartName null atau string kosong. Nama Awal LocalSystem null, dan oleh karena itu kata sandi dalam instans ini null, sehingga sebagian besar layanan membiarkan kolom ini kosong.
Perhatikan bahwa setelah menghapus layanan yang diinstal dengan nama pengguna dan kata sandi, alat penginstal tidak dapat mengembalikan layanan tanpa terlebih dahulu menggunakan tindakan kustom untuk mendapatkan kata sandi. Alat penginstal dapat memperoleh semua informasi yang diperlukan tentang layanan kecuali kata sandi, yang disimpan di bagian sistem yang dilindungi. Tindakan kustom memperoleh kata sandi dengan meminta pengguna, membaca properti dari database, atau membaca file. Tindakan kustom kemudian harus memanggil ChangeServiceConfig, untuk menyediakan kata sandi, sebelum menginstal ulang layanan.
Pemasang Windows tidak menulis nilai yang dimasukkan ke bidang Kata Sandi ke dalam file log.
-
Argumen
-
Kolom ini berisi argumen baris perintah atau properti yang diperlukan untuk menjalankan layanan.
-
Komponen_
-
Kunci eksternal ke kolom salah satu Tabel Komponen. Perhatikan bahwa untuk menginstal layanan ini menggunakan tabel InstallService, KeyPath untuk komponen ini harus menjadi file yang dapat dieksekusi untuk layanan.
-
Deskripsi
-
Kolom ini berisi deskripsi yang dapat dilokalkan untuk layanan yang sedang dikonfigurasi. Jika kolom ini dibiarkan kosong, alat penginstal menggunakan deskripsi layanan yang ada jika ada. Untuk informasi selengkapnya, lihat SERVICE_DESCRIPTION di Kit Pengembangan Perangkat Lunak (SDK) Microsoft Windows. Untuk menghapus deskripsi yang ada, masukkan "[~]" di kolom ini. Ini menghasilkan deskripsi kosong untuk layanan baru atau yang sudah ada.
Keterangan
Tindakan InstallServices dalam tabel berurutan memproses informasi dalam tabel ini. Untuk informasi tentang menggunakan tabel urutan, lihat Menggunakan Tabel Urutan.
Tabel ini memiliki sebagian besar parameter untuk fungsi Win32 CreateService .
Meskipun dimungkinkan untuk menggunakan antarmuka pengguna untuk menentukan bahwa layanan diinstal sebagai run-from-source, alat penginstal sebenarnya tidak mendukung jenis penginstalan ini. Layanan yang berjalan dengan tingkat hak istimewa sistem lokal harus diinstal untuk dijalankan dari hard drive lokal. Hindari menginstal layanan yang meniru hak istimewa pengguna tertentu karena ini dapat menulis data keamanan ke dalam log atau registri sistem. Ini berpotensi membuat masalah keamanan, konflik kata sandi, atau hilangnya data konfigurasi saat sistem dimulai ulang.
Untuk menghapus layanan selama penghapusan instalasi, harus ada rekaman yang sesuai untuk layanan dalam tabel ServiceControl dan bendera msidbServiceControlEventUninstallDelete harus muncul di kolom Peristiwa. Alat penginstal tidak menghapus layanan dalam tabel ServiceInstall selama penghapusan instalasi tanpa entri ini dalam tabel ServiceControl.
Untuk informasi tentang cara mengamankan layanan, lihat Tabel MsiLockPermissionsEx.
Validasi