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 |
|
MOF |
|
DLL |
|
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk