Metode StopService dari kelas Win32_Service (Sdoias.h)

Metode kelas StopServiceWMI menempatkan layanan, yang diwakili oleh objek Win32_Service, dalam status berhenti.

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

Sintaks

uint32 StopService();

Parameter

Metode ini tidak memiliki parameter.

Nilai hasil

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

0

Permintaan diterima.

1

Permintaan tidak didukung.

2

Pengguna tidak memiliki akses yang diperlukan.

3

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

4

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

5

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

6

Layanan belum dimulai.

7

Layanan ini tidak menanggapi permintaan mulai secara tepat waktu.

8

Kegagalan yang tidak diketahui saat memulai layanan.

9

Jalur direktori ke file yang dapat dieksekusi layanan tidak ditemukan.

10

Layanan sudah berjalan.

11

Database untuk menambahkan layanan baru dikunci.

12

Dependensi yang diandalkan layanan ini telah dihapus dari sistem.

13

Layanan gagal menemukan layanan yang diperlukan dari layanan dependen.

14

Layanan telah dinonaktifkan dari sistem.

15

Layanan tidak memiliki autentikasi yang benar untuk dijalankan pada sistem.

16

Layanan ini sedang dihapus dari sistem.

17

Layanan ini tidak memiliki utas eksekusi.

18

Layanan ini memiliki dependensi melingkar ketika dimulai.

19

Layanan berjalan dengan nama yang sama.

20

Nama layanan memiliki karakter yang tidak valid.

21

Parameter yang tidak valid telah diteruskan ke layanan.

22

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

23

Layanan ada dalam database layanan yang tersedia dari sistem.

24

Layanan saat ini dijeda dalam sistem.

Keterangan

Setelah Anda menentukan layanan mana yang dapat dihentikan atau dijeda, Anda dapat menggunakan metode StopService dan PauseService untuk menghentikan dan menjeda layanan. Keputusan untuk menghentikan layanan daripada menjedanya, atau sebaliknya, tergantung pada beberapa faktor, termasuk yang berikut:

  • Apakah layanan mampu dijeda? Jika tidak, satu-satunya opsi Anda adalah menghentikan layanan.
  • Apakah Anda perlu terus menangani permintaan klien untuk siapa pun yang sudah terhubung ke layanan? Jika demikian, menjeda layanan biasanya memungkinkannya untuk menangani klien yang ada sambil menolak akses ke klien baru. Sebaliknya, ketika Anda menghentikan layanan, semua klien segera terputus.
  • Apakah Anda perlu mengonfigurasi ulang layanan dan segera menerapkan perubahan? Meskipun properti layanan dapat diubah saat layanan dijeda, sebagian besar tidak berlaku sampai layanan benar-benar dihentikan dan dimulai ulang.

Kode pembuatan skrip yang diperlukan untuk menghentikan layanan hampir identik dengan kode yang diperlukan untuk menjeda layanan.

Jika Anda mencoba menghentikan layanan yang memiliki layanan dependen yang berjalan, metode StopService gagal dengan nilai pengembalian 3. Layanan dependen harus dihentikan terlebih dahulu.

Jika Anda menghentikan layanan, segera periksa Win32_Service.Properti status, karena nilai mungkin masih menampilkan layanan sebagai berjalan.

Contoh

Sampel kode VBScript berikut menunjukkan cara mematikan layanan.

Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='ClipSrv'")

for each Service in ServiceSet
 RetVal = Service.StopService()
 if RetVal = 0 then 
  WScript.Echo "Service stopped" 
 elseif RetVal = 5 then 
  WScript.Echo "Service already stopped" 
 end if
next

Sampel kode Perl berikut menunjukkan cara mematikan layanan.

use strict;
use Win32::OLE;

my $ServiceSet;

eval { $ServiceSet = 
 Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2")->
 ExecQuery("SELECT * FROM Win32_Service WHERE Name='ClipSrv'"); };

if (!$@ && defined $ServiceSet)
{
 foreach my $ServiceInst (in $ServiceSet)
 {
  my $Result = $ServiceInst->StopService();
  if ($Result == 0)
  {
   print "\nService stopped\n";
  }
  elsif ($Result == 5) 
  {
   print "\nService already stopped\n";
  }
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

Contoh kode VBScript berikut menunjukkan bahwa Anda tidak dapat menghentikan layanan NetDDE hingga layanan dependen dihentikan. Untuk menjalankan skrip, pastikan bahwa layanan NetDDE dan layanan dependennya berjalan dengan menggunakan snap-in MMC Services.msc atau perintah Net Start .

Kelas Win32_DependentService memungkinkan Anda menemukan dependensi layanan melalui Asosiator Kueri.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\cimv2")

Set objNetDDEservice = _
    objWMIService.Get("Win32_Service.Name='NetDDE'")

WScript.Echo "NetDDE service state: " & objNetDDEService.State
WScript.Echo "Stopping NetDDE service"
Return = objNetDDEService.StopService()
WScript.Echo "Return value: " & Return  & _
    "  Service cannot be stopped because " & _
    "dependent services are running"

Set colServiceList = objWMIService.ExecQuery("Associators of " _
    & "{Win32_Service.Name='NetDDE'} Where " _
        & "AssocClass=Win32_DependentService " & _
    "Role=Antecedent" )

For Each objService in colServiceList
   WScript.Echo "Dependent service: " & objService.Name & _
   "   State: " & objService.State
   WScript.Echo "Stopping dependent service " & objService.Name
   objService.StopService()    
Next

Wscript.Sleep 20000
WScript.Echo "Stopping NetDDE service"
Return = objNetDDEService.StopService()
WScript.Echo "Return value: " & Return

Persyaratan

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

Baca juga

Kelas Sistem Operasi

Win32_Service

Tugas WMI: Layanan

PauseService