Ubah metode kelas Win32_Service (Mbnapi.h)

Metode ubahkelas WMI memodifikasi Win32_Service.

Topik ini menggunakan sintaks Managed Object Format (MOF). Untuk informasi selengkapnya tentang menggunakan metode ini, lihat Memanggil Metode.

Sintaks

uint32 Change(
  [in] string  DisplayName,
  [in] string  PathName,
  [in] uint32  ServiceType,
  [in] uint32  ErrorControl,
  [in] string  StartMode,
  [in] boolean DesktopInteract,
  [in] string  StartName,
  [in] string  StartPassword,
  [in] string  LoadOrderGroup,
  [in] string  LoadOrderGroupDependencies[],
  [in] string  ServiceDependencies[]
);

Parameter

DisplayName [in]

Nama tampilan layanan. String ini memiliki panjang maksimum 256 karakter. Namanya adalah case- dipertahankan di manajer kontrol layanan. Perbandingan DisplayName selalu tidak peka huruf besar/kecil.

Batasan: Menerima nilai yang sama dengan properti Nama .

Contoh, "Atdisk".

PathName [in]

Jalur yang sepenuhnya memenuhi syarat ke file yang dapat dieksekusi yang mengimplementasikan layanan, misalnya, "\SystemRoot\System32\drivers\afd.sys".

ServiceType [in]

Jenis layanan yang disediakan untuk proses yang memanggilnya.

1 (0x1)

Kernel Driver

2 (0x2)

Driver Sistem File

4 (0x4)

Adaptor

8 (0x8)

Recognizer Driver

16 (0x10)

Proses Sendiri

32 (0x20)

Proses Berbagi

256 (0x100)

Proses Interaktif

ErrorControl [in]

Tingkat keparahan kesalahan jika layanan ini gagal dimulai selama startup. Nilai menunjukkan tindakan yang diambil oleh program startup jika kegagalan terjadi. Semua kesalahan dicatat oleh sistem.

Abaikan (0)

Pengguna tidak diberi tahu.

Normal (1)

Normal. Pengguna diberi tahu.

Parah (2)

Sistem dimulai ulang dengan konfigurasi terakhir yang baik.

Kritis (3)

Sistem mencoba untuk memulai ulang dengan konfigurasi yang baik.

StartMode [in]

Mode mulai layanan dasar Windows. Untuk informasi lebih lanjut, lihat bagian Keterangan.

Boot

Driver perangkat dimulai oleh pemuat sistem operasi. Nilai ini hanya berlaku untuk layanan driver.

Sistem

Driver perangkat dimulai oleh proses inisialisasi sistem operasi. Nilai ini hanya berlaku untuk layanan driver.

Otomatis

Layanan yang akan dimulai secara otomatis oleh Service Control Manager selama startup sistem.

Manual

Layanan yang akan dimulai oleh Service Control Manager saat proses memanggil metode StartService .

Nonaktif

Layanan yang tidak dapat lagi dimulai.

DesktopInteract [in]

Jika True, layanan dapat membuat atau berkomunikasi dengan jendela di desktop.

StartName [in]

Nama akun yang dijalankan layanan. Bergantung pada jenis layanan, nama akun mungkin dalam bentuk DomainName\Username atau .\Username. Proses layanan akan dicatat menggunakan salah satu dari dua formulir ini saat dijalankan. Jika akun milik domain bawaan, .\Nama Pengguna dapat ditentukan. Jika NULL ditentukan, layanan akan masuk sebagai akun LocalSystem. Untuk driver tingkat kernel atau sistem, StartName berisi nama objek driver (yaitu, \FileSystem\Rdr atau \Driver\Xns) yang digunakan sistem input dan output (I/O) untuk memuat driver perangkat. Jika NULL ditentukan, driver berjalan dengan nama objek default yang dibuat oleh sistem I/O berdasarkan nama layanan, misalnya, "DWDOM\Admin".

Anda juga dapat menggunakan format Nama Prinsipal Pengguna (UPN) untuk menentukan StartName, misalnya, Username@DomainName.

StartPassword [in]

Kata sandi ke nama akun yang ditentukan oleh parameter StartName . Tentukan NULL jika Anda tidak mengubah kata sandi. Tentukan string kosong jika layanan tidak memiliki kata sandi.

Catatan

Saat mengubah layanan dari sistem lokal ke jaringan, atau dari jaringan ke sistem lokal, StartPassword harus berupa string kosong ("") dan bukan NULL.

LoadOrderGroup [in]

Nama grup yang terkait dengannya. Grup urutan beban terkandung dalam registri sistem, dan menentukan urutan di mana layanan dimuat ke dalam sistem operasi. Jika pointer adalah NULL, atau jika menunjuk ke string kosong, layanan bukan milik grup. Untuk informasi lebih lanjut, lihat bagian Keterangan.

Dependensi antar grup harus tercantum dalam parameter LoadOrderGroupDependencies . Layanan dalam daftar grup pengurutan beban dimulai terlebih dahulu, diikuti oleh layanan dalam grup yang tidak ada dalam daftar grup urutan beban, diikuti oleh layanan yang bukan milik grup. Registri sistem memiliki daftar grup pemesanan beban yang terletak di:

\ HKEY_LOCAL_MACHINE Sistem\CurrentControlSet\Kontrol\ServiceGroupOrder

LoadOrderGroupDependencies [in]

Daftar grup pengurutan beban yang harus dimulai sebelum layanan ini dimulai. Array dua kali dihentikan null. Jika pointer adalah NULL, atau jika menunjuk ke string kosong, layanan tidak memiliki dependensi. Nama grup harus diawali oleh karakter SC_GROUP_IDENTIFIER (didefinisikan dalam file Winsvc.h) untuk membedakannya dari nama layanan karena layanan dan grup layanan memiliki namespace layanan yang sama. Dependensi pada grup berarti bahwa layanan ini dapat berjalan jika setidaknya satu anggota grup berjalan setelah upaya untuk memulai semua anggota grup.

ServiceDependencies [in]

Daftar yang berisi nama layanan yang harus dimulai sebelum layanan ini dimulai. Array dua kali dihentikan NULL. Jika pointer adalah NULL, atau jika menunjuk ke string kosong, layanan tidak memiliki dependensi. Dependensi pada layanan menunjukkan bahwa layanan ini hanya dapat berjalan jika layanan yang bergantung padanya berjalan.

Nilai kembali

Mengembalikan salah satu nilai yang tercantum dalam daftar berikut ini, atau nilai lain untuk menunjukkan kesalahan. Untuk kode kesalahan tambahan, lihat Konstanta Kesalahan WMI atau WbemErrorEnum. Untuk nilai HRESULT umum, lihat Kode Kesalahan Sistem.

Berhasil

0

Permintaan diterima.

Tidak Didukung

1

Permintaan tidak didukung.

Akses Ditolak

2

Pengguna tidak memiliki akses yang diperlukan.

Layanan Dependen Berjalan

3

Layanan tidak dapat dihentikan karena layanan lain yang sedang berjalan bergantung padanya.

Kontrol Layanan Tidak Valid

4

Kode kontrol yang diminta tidak valid, atau tidak dapat diterima oleh layanan.

Layanan Tidak Dapat Menerima Kontrol

5

Kode kontrol yang diminta tidak dapat dikirim ke layanan karena status layanan (Win32_BaseService. Properti status) sama dengan 0, 1, atau 2.

Layanan Tidak Aktif

6

Layanan belum dimulai.

Batas Waktu Permintaan Layanan

7

Layanan tidak menanggapi permintaan mulai secara tepat waktu.

Kegagalan Tidak Diketahui

8

Kegagalan tidak diketahui saat memulai layanan.

Jalur Tidak Ditemukan

9

Jalur direktori ke file yang dapat dieksekusi layanan tidak ditemukan.

Layanan Sudah Berjalan

10

Layanan sudah berjalan.

Database Layanan Terkunci

11

Database untuk menambahkan layanan baru dikunci.

Dependensi Layanan Dihapus

12

Dependensi yang diandalkan layanan ini telah dihapus dari sistem.

Kegagalan Dependensi Layanan

13

Layanan gagal menemukan layanan yang diperlukan dari layanan dependen.

Layanan Dinonaktifkan

14

Layanan telah dinonaktifkan dari sistem.

Log Masuk Layanan Gagal

15

Layanan tidak memiliki autentikasi yang benar untuk dijalankan pada sistem.

Layanan ditandai untuk penghapusan

16

Layanan ini sedang dihapus dari sistem.

Layanan Tanpa Utas

17

Layanan ini tidak memiliki utas eksekusi.

Dependensi Melingkar Status

18

Layanan ini memiliki dependensi melingkar ketika dimulai.

Nama Duplikat Status

19

Layanan berjalan dengan nama yang sama.

Nama Status Tidak Valid

20

Nama layanan memiliki karakter yang tidak valid.

Parameter Status Tidak Valid

21

Parameter yang tidak valid telah diteruskan ke layanan.

Status Akun Layanan Tidak Valid

22

Akun tempat layanan ini berjalan tidak valid atau tidak memiliki izin untuk menjalankan layanan.

Layanan Status Ada

23

Layanan ada dalam database layanan yang tersedia dari sistem.

Layanan Sudah Dijeda

24

Layanan saat ini dijeda dalam sistem.

Lainnya

25 4294967295

Keterangan

Ketika komputer dimulai, semua layanan mulai otomatis juga dimulai. Terkadang, salah satu layanan ini mungkin gagal dimulai bersama dengan komputer. Ketika layanan gagal selama startup sistem, komputer mengambil tindakan berdasarkan nilai kode kontrol kesalahan layanan.

sebagian besar layanan diinstal menggunakan kode kontrol kesalahan Normal. Beberapa pengecualian, yang diinstal menggunakan kode kesalahan Abaikan, meliputi:

  • Layanan Replikasi File
  • Kartu Pintar
  • Masuk Sekunder
  • WMI

Untuk layanan yang diinstal menggunakan kode kesalahan Abaikan, tidak ada pemberitahuan yang diberikan kepada pengguna bahwa layanan telah gagal. Jika Anda lebih suka pemberitahuan di layar bahwa layanan tidak dapat dimulai, Anda dapat menggunakan WMI untuk mengubah kode kontrol kesalahan. Kode kontrol kesalahan hanya berlaku untuk startup komputer; kode kontrol kesalahan tidak digunakan jika Anda berhenti dan kemudian mencoba memulai ulang layanan setelah komputer berjalan.

Terkadang, Anda mungkin perlu mengubah akun tempat layanan tertentu berjalan. Misalnya, Anda dapat menjalankan layanan di bawah akun administratif. Karena ini dapat membuat kerentanan keamanan, Anda mungkin mengalihkan layanan ke akun dengan lebih sedikit hak istimewa. Atau, Anda mungkin memiliki layanan yang berjalan di bawah akun yang akan dihapus, atau Anda mungkin ingin memastikan bahwa, di semua server Anda, layanan tertentu berjalan di bawah akun tertentu. Anda dapat menggunakan metode Ubah kelas Win32_Service untuk mengonfigurasi layanan agar berjalan di bawah akun pengguna tertentu. Saat memilih akun, ingatlah hal berikut:

  • Akun yang digunakan sebagai akun layanan harus memiliki hak untuk masuk sebagai layanan. Hak ini dapat diberikan dengan menggunakan Kebijakan Grup.

  • Akun yang digunakan sebagai akun layanan tidak boleh menjadi anggota grup Administrator lokal, domain, atau perusahaan.

  • Setiap instans layanan harus berjalan di bawah akun pengguna yang unik. Ini memberikan keamanan tambahan, dan memungkinkan audit instans layanan individual.

  • Jika layanan interaktif, maka layanan harus berjalan di bawah akun LocalSystem.

    LocalSystem diperlukan karena hanya satu stasiun jendela (WinSta0) yang dapat terlihat dan interaktif pada satu waktu. Jika layanan berjalan di bawah akun selain LocalSystem, layanan berjalan di stasiun jendela Service-0x03e7$\Default, yang merupakan jendela yang tidak terlihat. Layanan yang berjalan di stasiun jendela ini tidak dapat menerima output input atau tampilan.

Saat Anda menetapkan akun ke layanan, SCM memerlukan kata sandi yang benar untuk akun tersebut sebelum membuat penugasan. Jika Anda memberikan kata sandi yang salah, SCM akan menolak akun tersebut. Jika Anda mengonfigurasi akun layanan menggunakan akun LocalSystem, LocalService, atau NetworkService, Anda tidak perlu menyediakan kata sandi akun karena akun ini tidak memiliki kata sandi.

SCM menyimpan kata sandi akun dalam database layanan. Namun, setelah kata sandi ditetapkan, SCM tidak memastikan bahwa kata sandi yang disimpan dalam database layanan dan kata sandi yang ditetapkan ke akun pengguna di Direktori Aktif terus cocok. Akibatnya, situasi yang mirip dengan yang berikut ini dapat terjadi:

  • Anda mengonfigurasi layanan untuk dijalankan di bawah akun pengguna tertentu.
  • Layanan dimulai di bawah akun tersebut dengan menggunakan kata sandi akun saat ini.
  • Anda mengubah kata sandi untuk akun pengguna.
  • Layanan terus berjalan. Namun, jika layanan berhenti, Anda tidak dapat memulai ulang karena SCM terus menggunakan kata sandi lama yang tidak valid. Mengubah kata sandi di Direktori Aktif tidak mengubah kata sandi yang disimpan dalam database layanan.

Jika Anda menjalankan layanan di bawah akun pengguna reguler, Anda perlu memperbarui kata sandi layanan tersebut setiap kali kata sandi akun pengguna berubah. Ini bisa sangat memakan waktu jika Anda tidak yakin layanan mana yang berjalan di bawah akun tersebut atau komputer mana yang memiliki layanan yang berjalan di bawah akun tersebut. Untungnya, Anda dapat menggunakan WMI untuk memeriksa akun layanan di semua komputer Anda dan, jika perlu, mengubah kata sandi akun layanan.

Parameter Win32_LoadOrderGroup mewakili sekelompok layanan sistem yang menentukan dependensi eksekusi. Layanan harus dimulai dalam urutan yang ditentukan oleh Grup Pesanan Beban karena layanan bergantung satu sama lain. Layanan dependen ini mengharuskan keberadaan layanan antecedent berfungsi dengan benar.

Untuk mengubah layanan dari layanan jaringan ke sistem lokal, parameter StartName dan StartPassword harus memiliki nilai berikut:

StartName = "LocalSystem"
StartPassword = "" // - empty string, not NULL

Untuk mengubah layanan dari layanan sistem lokal ke jaringan, parameter StartName dan StartPassword harus memiliki nilai berikut:

StartName = "NT AUTHORITY\NetworkService"
StartPassword = "" // - empty string, not NULL

Contoh

VBScript berikut mengubah akun layanan untuk layanan agar tidak berjalan di bawah akun pengguna tertentu menjadi LocalSystem.

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2")
Set colServiceList = objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE StartName = '.\\NetSvc'")
For Each objService in colServices
 errServiceChange = objService.Change( , , , , , , ".\LocalSystem" , "")
Next

VBScript berikut mengubah kata sandi akun layanan untuk semua skrip yang berjalan di bawah Netsvc

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2")
Set colServiceList = objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE StartName = '.\\NetSvc'")
For Each objservice in colServiceList
 errReturn = objService.Change( , , , , , , , "password")
Next

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows Vista
Server minimum yang didukung
Windows Server 2008
Ruang nama
Root\CIMV2
Header
Mbnapi.h
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Lihat juga

Kelas Sistem Operasi

Win32_Service

Tugas WMI: Layanan