Metodo Create della classe Win32_Service (provider WMI CIMWin32)

Il metodo CreateWMI class crea un nuovo servizio di sistema.

In questo argomento viene utilizzata la sintassi MOF (Managed Object Format). Per altre informazioni sull'uso di questo metodo, vedere Chiamata di un metodo.

Sintassi

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

Parametri

Nome [in]

Nome del servizio da installare nel metodo Create . La lunghezza massima della stringa è di 256 caratteri. Il database di Service Control Manager mantiene le maiuscole e minuscole dei caratteri, ma i confronti dei nomi del servizio non fanno sempre distinzione tra maiuscole e minuscole. Le barre (/) e le barre rovesciata doppie (\) non sono caratteri di nome del servizio non validi.

DisplayName [in]

Nome visualizzato del servizio. La lunghezza massima della stringa è di 256 caratteri. Il nome viene mantenuto senza maiuscole/minuscole in Service Control Manager. I confronti di DisplayName non fanno sempre distinzione tra maiuscole e minuscole.

Vincoli: accetta lo stesso valore del parametro Name .

Esempio: "Atdisk".

PathName [in]

Percorso completo del file eseguibile che implementa il servizio.

Esempio: "\SystemRoot\System32\drivers\afd.sys".

ServiceType [in]

Tipo di servizi forniti ai processi che li chiamano.

1 (0x1)

Kernel Driver

2 (0x2)

File System Driver

4 (0x4)

Adattatore

8 (0x8)

Recognizer Driver

16 (0x10)

Processo personale

32 (0x20)

Processo di condivisione

256 (0x100)

Processo interattivo

ErrorControl [in]

Gravità dell'errore se l'avvio del metodo Create non riesce. Il valore indica l'azione eseguita dal programma di avvio in caso di errore. Tutti gli errori vengono registrati dal sistema.

0

L'utente non viene notificato.

1

L'utente viene notificato.

2

Il sistema viene riavviato con l'ultima configurazione valida nota.

3

Il sistema tenta di iniziare con una configurazione valida.

StartMode [in]

Modalità di avvio del servizio di base di Windows.

Avvio

Driver di dispositivo avviato dal caricatore del sistema operativo. Questo valore è valido solo per i servizi del driver.

Sistema

Driver di dispositivo avviato dal processo di inizializzazione del sistema operativo. Questo valore è valido solo per i servizi del driver.

Automatico

Servizio da avviare automaticamente da Service Control Manager durante l'avvio del sistema.

Manuale

Servizio da avviare da Service Control Manager quando un processo chiama il metodo StartService .

Disabled

Servizio che non può più essere avviato.

DesktopInteract [in]

Se true, il servizio può creare o comunicare con le finestre sul desktop.

StartName [in]

Nome dell'account con cui viene eseguito il servizio. A seconda del tipo di servizio, il nome dell'account può essere nel formato NomeDominio\Nomeutente o Nome entità utente (UPN) (Username@DomainName). Il processo del servizio viene registrato usando uno di questi due moduli durante l'esecuzione. Se l'account appartiene al dominio predefinito, è possibile specificare .\Username. Se viene specificato NULL , il servizio viene connesso come account LocalSystem. Per un kernel o driver a livello di sistema, StartName contiene il nome dell'oggetto driver (ovvero \FileSystem\Rdr o \Driver\Xns) usato dal sistema di input e output (I/O) per caricare il driver di dispositivo. Se viene specificato NULL , il driver viene eseguito con un nome di oggetto predefinito creato dal sistema di I/O in base al nome del servizio. Esempio: DWDOM\Amministrazione.

StartPassword [in]

Password per il nome dell'account specificato dal parametro StartName . Specificare NULL se non si modifica la password. Specificare una stringa vuota se il servizio non dispone di password.

LoadOrderGroup [in]

Nome del gruppo associato al nuovo servizio. I gruppi di ordini di carico sono contenuti nel Registro di sistema e determinano la sequenza in cui i servizi vengono caricati nel sistema operativo. Se il puntatore è NULL o se punta a una stringa vuota, il servizio non appartiene a un gruppo. Le dipendenze tra i gruppi devono essere elencate nel parametro LoadOrderGroupDependencies . I servizi nell'elenco dei gruppi di ordinamento del carico vengono avviati per primi, seguiti dai servizi nei gruppi non inclusi nell'elenco dei gruppi di ordinamento del carico, seguiti da servizi che non appartengono a un gruppo. Il Registro di sistema include un elenco di gruppi di ordinamento di carico disponibili in:

HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Controllo\ServiceGroupOrder

LoadOrderGroupDependencies [in]

Matrice di gruppi di ordinamento del carico che devono essere avviati prima di questo servizio. Ogni elemento della matrice è delimitato da NULL e l'elenco viene terminato da due valori NULL . In Visual Basic o script è possibile passare un vbArray. Se il puntatore è NULL o se punta a una stringa vuota, il servizio non ha dipendenze. I nomi di gruppo devono essere preceduti dal carattere SC_GROUP_IDENTIFIER (definito nel file Winsvc.h) per distinguerlo da un nome di servizio, perché i servizi e i gruppi di servizi condividono lo stesso spazio dei nomi. La dipendenza da un gruppo significa che questo servizio può essere eseguito se almeno un membro del gruppo è in esecuzione dopo un tentativo di avviare tutti i membri del gruppo.

ServiceDependencies [in]

Matrice che contiene i nomi dei servizi che devono essere avviati prima dell'avvio del servizio. Ogni elemento della matrice è delimitato da NULL e l'elenco viene terminato da due valori NULL . In Visual Basic o script è possibile passare un vbArray. Se il puntatore è NULL o se punta a una stringa vuota, il servizio non ha dipendenze. La dipendenza da un servizio significa che questo servizio può essere eseguito solo se il servizio dipende dall'esecuzione.

Valore restituito

Restituisce uno dei valori elencati nell'elenco seguente o qualsiasi altro valore per indicare un errore. Per altri codici di errore, vedere Costanti di errore WMI o WbemErrorEnum. Per i valori HRESULT generali, vedere Codici di errore di sistema.

0

La richiesta è stata accettata.

1

La richiesta non è supportata.

2

L'utente non ha avuto l'accesso necessario.

3

Impossibile arrestare il servizio perché altri servizi in esecuzione dipendono dal servizio.

4

Il codice di controllo richiesto non è valido o non è accettabile per il servizio.

5

Impossibile inviare il codice di controllo richiesto al servizio perché lo stato del servizio (proprietà State della classe Win32_BaseService ) è uguale a 0, 1 o 2.

6

Il servizio non è stato avviato.

7

Il servizio non ha risposto in tempo utile alla richiesta di avvio.

8

Errore sconosciuto durante l'avvio del servizio.

9

Non è stato trovato il percorso della directory del file eseguibile del servizio.

10

Il servizio è già in esecuzione.

11

Il database a cui aggiungere il nuovo servizio è bloccato.

12

Una dipendenza da questo servizio si basa su è stata rimossa dal sistema.

13

Impossibile trovare un servizio dipendente necessario.

14

Il servizio è stato disabilitato dal sistema.

15

Il servizio non dispone delle credenziali di autenticazione corrette per l'esecuzione nel sistema.

16

Questo servizio viene rimosso dal sistema.

17

Il servizio non ha alcun thread di esecuzione.

18

Il servizio ha dipendenze circolari all'avvio.

19

Un servizio è in esecuzione con lo stesso nome.

20

Il nome del servizio ha caratteri non validi.

21

I parametri non validi sono stati passati al servizio.

22

L'account in cui viene eseguito questo servizio non è valido o non dispone delle autorizzazioni per l'esecuzione del servizio.

23

Il servizio esiste già nel database dei servizi disponibili dal sistema.

24

Il servizio è attualmente sospeso nel sistema.

Commenti

I servizi vengono in genere installati in uno dei due modi: come parte dell'installazione del sistema operativo o usando un programma di installazione fornito dallo sviluppatore del servizio. Tuttavia, alcuni servizi, in particolare quelli creati in-house, potrebbero non avere un programma di installazione. In queste istanze è possibile usare il metodo Create per installare i servizi a livello di codice.

Nonostante il nome, il metodo Create non crea effettivamente un servizio; installa semplicemente un servizio esistente. Per usare questo comando, è necessario copiare il file eseguibile del servizio in un computer e quindi usare Crea per installare il servizio.

Il metodo Create è simile al metodo Change . In entrambi i casi, le proprietà del servizio vengono passate come parametri al metodo. Come per i parametri usati con il metodo Change , l'ordine in cui questi parametri vengono passati è molto importante.

Il parametro LoadOrderGroup rappresenta un raggruppamento dei servizi di sistema che definiscono le dipendenze di esecuzione. I servizi devono essere avviati nell'ordine specificato dal gruppo di ordini di carico, poiché i servizi dipendono l'uno dall'altro. Questi servizi dipendenti richiedono la presenza dei servizi precedenti per funzionare correttamente.

Esempio

Il codice VBScript seguente installa un servizio denominato DbService

Const OWN_PROCESS = 16
Const NOT_INTERACTIVE = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMIService.Get("Win32_BaseService")
errReturn = objService.Create ("DbService", "Personnel Database", _
"c:\windows\system32\db.exe", OWN_PROCESS ,2 ,"Automatic" , _
 NOT_INTERACTIVE ,".\LocalSystem" ,"")

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Spazio dei nomi
Radice\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Vedi anche

Classi del sistema operativo

Win32_Service

Attività WMI: Servizi