Bagikan melalui


Metode StartService dari kelas Win32_Service (Penyedia WMI CIMWin32)

Metode StartService mencoba menempatkan layanan yang dirujuk ke status startup-nya.

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

Sintaks

uint32 StartService();

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

Meskipun mungkin tidak ada perbedaan praktis antara layanan yang dihentikan dan layanan yang dijeda, kedua status tampak berbeda dengan SCM. Layanan yang dihentikan adalah layanan yang tidak berjalan dan harus melalui seluruh prosedur mulai layanan. Namun, layanan yang dijeda masih berjalan tetapi fungsinya ditangguhkan. Karena itu, layanan yang dijeda tidak perlu melalui seluruh prosedur mulai layanan tetapi memerlukan prosedur yang berbeda untuk melanjutkan fungsi.

Anda harus menggunakan metode yang tepat untuk memulai layanan yang telah dihentikan atau untuk melanjutkan layanan yang telah dijeda. Metode Win32_Service StartService dan ResumeService harus digunakan dalam situasi berikut:

  • Jika layanan saat ini dihentikan, Anda harus menggunakan metode StartService untuk memulai ulang; ResumeService tidak dapat memulai layanan yang saat ini dihentikan.
  • Jika layanan dijeda, Anda harus menggunakan ResumeService. Jika Anda menggunakan metode StartService pada layanan yang dijeda, Anda menerima pesan, "Layanan sudah berjalan." Namun, layanan tetap dijeda hingga kode kontrol layanan resume dikirim ke layanan tersebut.

Jika Anda memulai layanan yang dihentikan yang bergantung pada layanan lain, kedua layanan dimulai. Ketika layanan dimulai dengan metode ini, layanan dependen apa pun tidak dimulai secara otomatis. Anda harus menggunakan kelas asosiasi Win32_DependentService dan Asosiator Kueri untuk menemukan dependen dan memulainya secara terpisah.

Contoh

Sampel kode VBSScript berikut menunjukkan cara memulai layanan tertentu dari instans Win32_Service.

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

for each Service in ServiceSet
 RetVal = Service.StartService()
 if RetVal = 0 then WScript.Echo "Service started"
 if RetVal = 10 then WScript.Echo "Service already running"
next

Sampel kode Perl berikut menunjukkan cara memulai layanan tertentu dari instans Win32_Service.

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 $service (in $ServiceSet)
 {
  my $Result = $service->StartService();
  if ($Result == 0) 
  {
   print "\nService started\n";
  }
  elsif ($Result == 10)
  {
   print "\nService already running\n";
  }
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

Contoh kode VBScript berikut, NetDDE, bergantung pada layanan NetDDEDSDM. Skrip menemukan kelas di mana NetDDE bergantung dan memulainya, yang tidak secara otomatis memulai NetDDE.

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

' Stop NetDDE if it is running
Set objNetDDEService = objWMIService.Get("Win32_Service.Name='NetDDE'")
Return = objNetDDEService.StopService()

' NetDDE is in the dependent role to another service
Set colServiceList = objWMIService.ExecQuery("Associators of " _
    & "{Win32_Service.Name='NetDDE'} Where " & "AssocClass=Win32_DependentService " & "Role=Dependent" )

' start the service on which NetDDE is dependent
For Each objService in colServiceList
    WScript.Echo "Starting " & objService.Name
    Return = objService.StartService()
    If Return = 0 Then
        WScript.Echo "Parent service " & objService.Name & " started successfully"
    Else
        WScript.Echo "Parent service " & objService.Name & " did not start. Return = " & Return
    End If
Next

' NetDDE is still stopped
Set objNetDDEService = _
    objWMIService.Get("Win32_Service.Name='NetDDE'")
WScript.Echo "Dependent NetDDE service is " & objNetDDEService.State

Persyaratan

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

Baca juga

Kelas Sistem Operasi

Win32_Service

Tugas WMI: Layanan