Tabella ServiceInstall

La tabella ServiceInstall viene usata per installare un servizio e contiene le colonne seguenti.

Colonna Tipo Chiave Nullable
ServiceInstall Identificatore S N
Nome Formattato N N
DisplayName Formattato N S
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup Formattato N S
Dipendenze Formattato N S
StartName Formattato N S
Password Formattato N S
Argomenti Formattato N S
Componente_ Identificatore N N
Descrizione Formattato N S

 

Colonne

ServiceInstall

Questa è la chiave primaria per la tabella.

Nome

Questa colonna è la stringa che fornisce il nome del servizio da installare. La stringa ha una lunghezza massima di 256 caratteri. Il database di gestione controllo del servizio mantiene il caso dei caratteri nel nome del servizio, ma i confronti dei nomi dei servizi sono insensibili. La barra in avanti (/) e la barra rovesciata (\) sono caratteri di nome servizio non validi.

Displayname

Questa colonna è la stringa localizzabile usata dai programmi dell'interfaccia utente per identificare il servizio. La stringa ha una lunghezza massima di 256 caratteri. Il gestore del controllo del servizio mantiene il caso del nome visualizzato, ma i confronti dei nomi visualizzati sono insensibili.

Servicetype

Questa colonna è un set di flag di bit che specificano il tipo di servizio. In questa colonna è necessario specificare uno dei tipi di servizio seguenti.

Tipo di servizio Valore Descrizione
SERVICE_WIN32_OWN_PROCESS 0x00000010 Servizio Microsoft Win32 che esegue il proprio processo.
SERVICE_WIN32_SHARE_PROCESS 0x00000020 Servizio Win32 che condivide un processo.
SERVICE_INTERACTIVE_PROCESS 0x00000100 Servizio Win32 che interagisce con il desktop. Questo valore non può essere usato da solo e deve essere aggiunto a uno dei due tipi precedenti. La colonna StartName deve essere impostata su LocalSystem o null quando si usa questo flag.

 

I tipi di servizio seguenti non sono supportati.

Tipo di servizio Valore Descrizione
SERVICE_KERNEL_DRIVER 0x00000001 Servizio driver.
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Servizio driver di file system.

 

StartType

Questa colonna è un set di flag di bit che specificano quando avviare il servizio. In questa colonna è necessario specificare uno dei tipi di avvio del servizio seguenti.

Tipo di avvio del servizio Valore Descrizione
SERVICE_AUTO_START 0x00000002 Un servizio viene avviato durante l'avvio del sistema.
SERVICE_DEMAND_START 0x00000003 Un servizio viene avviato quando gestione controllo del servizio chiama la funzione StartService .
SERVICE_DISABLED 0x00000004 Specifica un servizio che non può più essere avviato.

 

Windows Installer non può usare le opzioni di SERVICE_BOOT_START e SERVICE_SYSTEM_START.

ErrorControl

Questa colonna specifica l'azione eseguita dal programma di avvio se il servizio non viene avviato durante l'avvio. Questi valori influiscono sugli eventi ServiceControl StartService per i servizi installati. In questa colonna è necessario specificare uno dei flag di controllo degli errori seguenti.

L'aggiunta della costante msidbServiceInstallErrorControlVital (value = 0x08000) ai flag nella tabella seguente specifica che l'installazione complessiva deve avere esito negativo se il servizio non può essere installato nel sistema.

Flag di controllo degli errori Valore Azione del programma di avvio
SERVICE_ERROR_IGNORE 0x00000000 Registra l'errore e continua con l'operazione di avvio.
SERVICE_ERROR_NORMAL 0x00000001 Registra l'errore, visualizza una finestra di messaggio e continua l'operazione di avvio.
SERVICE_ERROR_CRITICAL 0x00000003 Registra l'errore se possibile e il sistema viene riavviato con l'ultima configurazione nota come valida. Se è in corso l'avvio dell'ultima configurazione valida nota, l'operazione di avvio ha esito negativo.

 

LoadOrderGroup

Questa colonna contiene la stringa che assegna un nome al gruppo di ordinamento del carico di cui il servizio è membro. Specificare null o una stringa vuota se il servizio non appartiene a un gruppo.

Dipendenze

Questa colonna è un elenco di nomi di servizi o gruppi di ordinamento di carico che il sistema deve avviare prima di questo servizio. Separare i nomi nell'elenco in base ai valori Null. Se il servizio non ha dipendenze, specificare Null o una stringa vuota. Usare la sintassi [~] per inserire un valore Null. 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.

Ad esempio, per richiedere che il servizio di avvio del sistema1 e service2, prima di avviare il servizio elencato nella colonna ServiceInstall, immettere service1[~]service2[~][~] nella colonna Dipendenze. Gli identificatori service1 e service2 devono essere presenti nella chiave primaria della tabella o essere il nome del servizio già installato.

È necessario anteporre i nomi dei gruppi con + in modo che possano essere distinti da un nome di servizio. Per richiedere che il servizio venga avviato dal sistema1 e almeno un membro del gruppo di ordinamento MyGroup prima di avviare il servizio elencato nella colonna ServiceInstall, immettere service1[~]+MyGroup[~][~][~].

StartName

Il servizio viene connesso come nome specificato dalla stringa in questa colonna. Se il tipo di servizio è SERVICE_WIN32_OWN_PROCESS usare un nome account nel formato DomainName\UserName. Se l'account appartiene al dominio predefinito, è consentito specificare .\UserName. L'account LocalSystem deve essere utilizzato se il tipo di servizio è SERVICE_WIN32_SHARE_PROCESS o SERVICE_INTERACTIVE_PROCESS. La funzione CreateService usa l'account LocalSystem se StartName è specificato come Null e la maggior parte dei servizi lascia quindi vuota questa colonna.

Password

Questa stringa è la password per il nome dell'account specificato nella colonna StartName. Si noti che l'utente deve disporre delle autorizzazioni per accedere come servizio. Il servizio non ha password se StartName è null o una stringa vuota. Il nome iniziale di LocalSystem è null e pertanto la password in questa istanza è Null, quindi la maggior parte dei servizi lascia vuota questa colonna.

Si noti che dopo l'eliminazione di un servizio installato con un nome utente e una password, il programma di installazione non può eseguire il rollback del servizio senza prima usare un'azione personalizzata per ottenere la password. Il programma di installazione può acquisire tutte le informazioni necessarie sul servizio, ad eccezione della password, che viene archiviata in una parte protetta del sistema. L'azione personalizzata acquisisce la password richiedendo all'utente, leggendo una proprietà dal database o leggendo un file. L'azione personalizzata deve quindi chiamare ChangeServiceConfig, per specificare la password, prima di reinstallare il servizio.

Windows Installer non scrive il valore immesso nel campo Password nel file di log.

Argomenti

Questa colonna contiene gli argomenti o le proprietà della riga di comando necessari per eseguire il servizio.

Componente_

Chiave esterna alla colonna 1 della tabella dei componenti. Si noti che per installare questo servizio usando la tabella InstallService, KeyPath per questo componente deve essere il file eseguibile per il servizio.

Descrizione

Questa colonna contiene una descrizione localizzabile per il servizio in fase di configurazione. Se questa colonna viene lasciata vuota, il programma di installazione usa la descrizione esistente del servizio, se presente. Per altre informazioni, vedere SERVICE_DESCRIPTION in Microsoft Windows Software Development Kit (SDK). Per cancellare una descrizione esistente, immettere "[~]" in questa colonna. Viene così restituita una descrizione vuota per un servizio nuovo o esistente.

Commenti

L'azione InstallServices nelle tabelle di sequenza elabora le informazioni contenute in questa tabella. Per informazioni sull'uso delle tabelle di sequenza, vedere Uso di una tabella sequenza.

Questa tabella include la maggior parte dei parametri per la funzione CreateService Win32.

Anche se è possibile usare l'interfaccia utente per specificare che un servizio deve essere installato come run-from-source, il programma di installazione non supporta effettivamente questo tipo di installazione. I servizi eseguiti con il livello di privilegio del sistema locale devono essere installati per l'esecuzione dal disco rigido locale. Evitare di installare i servizi che rappresentano i privilegi di un determinato utente perché questo può scrivere dati di sicurezza in un log o nel Registro di sistema. Ciò può potenzialmente creare un problema di sicurezza, un conflitto di password o la perdita di dati di configurazione al riavvio del sistema.

Per eliminare un servizio durante una disinstallazione, nella colonna Event deve essere presente un record corrispondente per il servizio nella tabella ServiceControl e il flag msidbServiceControlEventUninstallDelete . Il programma di installazione non elimina un servizio nella tabella ServiceInstall durante la disinstallazione senza questa voce nella tabella ServiceControl.

Per informazioni su come proteggere un servizio, vedere la tabella MsiLockPermissionsEx.

Convalida

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69