Daftar Catatan Layanan

Karena setiap entri layanan dibaca dari database layanan yang diinstal, SCM membuat catatan layanan untuk layanan. Catatan layanan meliputi:

  • Nama layanan
  • Jenis mulai (mulai otomatis atau permintaan-mulai)
  • Status layanan (lihat struktur SERVICE_STATUS )
    Jenis
    Status saat ini
    Kode kontrol yang dapat diterima
    Keluar dari kode
    Petunjuk tunggu
  • Penunjuk ke daftar dependensi

Nama pengguna dan kata sandi akun ditentukan pada saat layanan diinstal. SCM menyimpan nama pengguna di registri dan kata sandi dalam bagian aman dari Otoritas Keamanan Lokal (LSA). Administrator sistem dapat membuat akun dengan kata sandi yang tidak pernah kedaluwarsa. Atau, administrator sistem dapat membuat akun dengan kata sandi yang kedaluwarsa dan mengelola akun dengan mengubah kata sandi secara berkala.

SCM menyimpan dua salinan kata sandi akun pengguna, kata sandi saat ini, dan kata sandi cadangan. Kata sandi yang ditentukan saat pertama kali layanan diinstal disimpan sebagai kata sandi saat ini dan kata sandi cadangan tidak diinisialisasi. Ketika SCM mencoba menjalankan layanan dalam konteks keamanan akun pengguna, SCM menggunakan kata sandi saat ini. Jika kata sandi saat ini berhasil digunakan, kata sandi juga disimpan sebagai kata sandi cadangan. Jika kata sandi dimodifikasi dengan fungsi ChangeServiceConfig , atau utilitas panel kontrol Layanan, kata sandi baru disimpan sebagai kata sandi saat ini dan kata sandi sebelumnya disimpan sebagai kata sandi cadangan. Jika SCM mencoba memulai layanan dan kata sandi saat ini gagal, maka scm menggunakan kata sandi cadangan. Jika kata sandi cadangan berhasil digunakan, kata sandi tersebut disimpan sebagai kata sandi saat ini.

SCM memperbarui status layanan saat layanan mengirimkan pemberitahuan statusnya menggunakan fungsi SetServiceStatus . SCM mempertahankan status layanan driver dengan mengkueri sistem I/O, alih-alih menerima pemberitahuan status, seperti halnya dari layanan.

Layanan dapat mendaftarkan informasi jenis tambahan dengan memanggil fungsi SetServiceBits . Fungsi NetServerGetInfo dan NetServerEnum mendapatkan jenis layanan yang didukung.