Criar método da classe Win32_Service (Provedores WMI CIMWin32)
O método de classe CreateWMI cria um novo serviço do sistema.
Este tópico usa a sintaxe MOF (Managed Object Format). Para obter mais informações sobre como usar esse método, consulte Chamando um método.
Sintaxe
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[]
);
Parâmetros
-
Nome [in]
-
Nome do serviço a ser instalado no método Create . O comprimento máximo da cadeia de caracteres é de 256 caracteres. O banco de dados do Service Control Manager preserva o caso dos caracteres, mas as comparações de nome de serviço sempre diferenciam maiúsculas de minúsculas. As barras de encaminhamento (/) e as barras traseiras duplas (\) são caracteres de nome de serviço inválidos.
-
DisplayName [in]
-
Nome de exibição do serviço. Essa cadeia de caracteres tem um tamanho máximo de 256 caracteres. O nome é preservado por maiúsculas e minúsculas no Service Control Manager. As comparações de DisplayName sempre diferenciam maiúsculas de minúsculas.
Restrições: aceita o mesmo valor que o parâmetro Name .
Exemplo: "Atdisk".
-
PathName [in]
-
Caminho totalmente qualificado para o arquivo executável que implementa o serviço.
Exemplo: "\SystemRoot\System32\drivers\afd.sys".
-
ServiceType [in]
-
Tipo de serviços fornecidos a processos que os chamam.
-
1 (0x1)
-
Kernel Driver
-
2 (0x2)
-
Driver do Sistema de Arquivos
-
4 (0x4)
-
Adaptador
-
8 (0x8)
-
Driver do Reconhecedor
-
16 (0x10)
-
Processo Próprio
-
32 (0x20)
-
Compartilhar Processo
-
256 (0x100)
-
Processo Interativo
ErrorControl [in]
Gravidade do erro se o método Create falhar ao iniciar. O valor indica a ação executada pelo programa de inicialização se ocorrer uma falha. Todos os erros são registrados pelo sistema.
0
O usuário não é notificado.
1
O usuário é notificado.
2
Sistema é reiniciado com a última configuração bem-sucedida conhecida.
3
O sistema tenta começar com uma boa configuração.
StartMode [in]
Modo inicial do serviço base do Windows.
Inicialização
Driver de dispositivo iniciado pelo carregador do sistema operacional. Esse valor só é válido para serviços do driver.
Sistema
Driver de dispositivo iniciado pelo processo de inicialização do sistema operacional. Esse valor só é válido para serviços do driver.
Automático
Serviço a ser iniciado automaticamente pelo Service Control Manager durante a inicialização do sistema.
Manual
Serviço a ser iniciado pelo Service Control Manager quando um processo chama o método StartService .
Desabilitado
Serviço que não pode mais ser iniciado.
DesktopInteract [in]
Se for true, o serviço poderá criar ou se comunicar com janelas na área de trabalho.
StartName [in]
Nome da conta sob o qual o serviço é executado. Dependendo do tipo de serviço, o nome da conta pode estar na forma de formato DomainName\Username ou Nome upn (nome upn) (Username@DomainName). O processo de serviço é registrado usando um desses dois formulários quando ele é executado. Se a conta pertencer ao domínio interno, .\Username poderá ser especificado. Se NULL for especificado, o serviço será conectado como a conta LocalSystem. Para um kernel ou drivers no nível do sistema, StartName contém o nome do objeto do driver (ou seja, \FileSystem\Rdr ou \Driver\Xns) que o sistema de entrada e saída (E/S) usa para carregar o driver do dispositivo. Se NULL for especificado, o driver será executado com um nome de objeto padrão criado pelo sistema de E/S com base no nome do serviço. Exemplo: DWDOM\Administração.
StartPassword [in]
Senha para o nome da conta especificado pelo parâmetro StartName . Especifique NULL se você não estiver alterando a senha. Especifique uma cadeia de caracteres vazia se o serviço não tiver nenhuma senha.
LoadOrderGroup [in]
Nome do grupo associado ao novo serviço. Os grupos de ordem de carga estão contidos no registro e determinam a sequência em que os serviços são carregados no sistema operacional. Se o ponteiro for NULL ou se apontar para uma cadeia de caracteres vazia, o serviço não pertencerá a um grupo. As dependências entre grupos devem ser listadas no parâmetro LoadOrderGroupDependencies . Os serviços na lista de grupos de ordenação de carga são iniciados primeiro, seguidos por serviços em grupos que não estão na lista de grupos de ordenação de carga, seguidos por serviços que não pertencem a um grupo. O registro tem uma lista de grupos de ordenação de carga localizados em:
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Controle\ServiceGroupOrder
LoadOrderGroupDependencies [in]
Matriz de grupos de ordenação de carga que devem ser iniciados antes desse serviço. Cada item na matriz é delimitado por NULL e a lista é encerrada por dois valores NULL . No Visual Basic ou no script, você pode passar um vbArray. Se o ponteiro for NULL ou se apontar para uma cadeia de caracteres vazia, o serviço não terá dependências. Os nomes de grupo devem ser prefixados pelo caractere SC_GROUP_IDENTIFIER (definido no arquivo Winsvc.h) para diferenciá-lo de um nome de serviço, pois serviços e grupos de serviços compartilham o mesmo namespace. A dependência em um grupo significa que esse serviço pode ser executado se pelo menos um membro do grupo estiver em execução após uma tentativa de iniciar todos os membros do grupo.
ServiceDependencies [in]
Matriz que contém nomes de serviços que devem ser iniciados antes do início desse serviço. Cada item na matriz é delimitado por NULL e a lista é encerrada por dois valores NULL . No Visual Basic ou no script, você pode passar um vbArray. Se o ponteiro for NULL ou se apontar para uma cadeia de caracteres vazia, o serviço não terá dependências. A dependência de um serviço significa que esse serviço só poderá ser executado se o serviço do qual ele depende estiver em execução.
Valor retornado
Retorna um dos valores listados na lista a seguir ou qualquer outro valor para indicar um erro. Para obter códigos de erro adicionais, consulte Constantes de erro WMI ou WbemErrorEnum. Para obter valores gerais de HRESULT , consulte Códigos de erro do sistema.
-
0
-
A solicitação foi aceita.
-
1
-
A solicitação não terá suporte.
-
2
-
O usuário não tinha o acesso necessário.
-
3
-
O serviço não pode ser interrompido, porque outros serviços em execução dependem dele.
-
4
-
O código de controle pedido não é válido ou é inaceitável para o serviço.
-
5
-
O código de controle solicitado não pode ser enviado ao serviço porque o estado do serviço (propriedade State da classe Win32_BaseService ) é igual a 0, 1 ou 2.
-
6
-
O serviço não foi iniciado.
-
7
-
O serviço não respondeu à solicitação de início em um tempo oportuno.
-
8
-
Falha desconhecida ao iniciar o serviço.
-
9
-
O caminho do diretório para o arquivo executável do serviço não foi encontrado.
-
10
-
O serviço já está em execução.
-
11
-
O banco de dados para adicionar um serviço novo está bloqueado.
-
12
-
Uma dependência da qual esse serviço depende foi removida do sistema.
-
13
-
O serviço não localizou o serviço necessário em um serviço dependente.
-
14
-
O serviço foi desabilitado do sistema.
-
15
-
O serviço não tem a autenticação correta para ser executado no sistema.
-
16
-
Esse serviço está sendo removido do sistema.
-
17
-
O serviço não tem thread de execução.
-
18
-
O serviço tem dependências circulares quando é iniciado.
-
19
-
Um serviço está em execução com o mesmo nome.
-
20
-
O nome do serviço tem caracteres inválidos.
-
21
-
Parâmetros inválidos foram passados para o serviço.
-
22
-
A conta na qual esse serviço é executado é inválida ou não tem as permissões para executar o serviço.
-
23
-
O serviço existe no banco de dados de serviços disponível no sistema.
-
24
-
O serviço está pausado atualmente no sistema.
Comentários
Os serviços geralmente são instalados de duas maneiras: como parte da instalação do sistema operacional ou usando um programa de instalação fornecido pelo desenvolvedor do serviço. No entanto, alguns serviços, particularmente aqueles criados internamente, podem não ter um programa de instalação. Nessas instâncias, você pode usar o método Create para instalar programaticamente os serviços.
Apesar do nome, o método Create não cria realmente um serviço; ele simplesmente instala um serviço existente. Para usar esse comando, você precisa copiar o arquivo executável do serviço para um computador e, em seguida, usar Criar para instalar o serviço.
O método Create é semelhante ao método Change . Em ambos os casos, as propriedades do serviço são passadas como parâmetros para o método . Assim como acontece com os parâmetros usados com o método Change , a ordem na qual esses parâmetros são passados é muito importante.
O parâmetro LoadOrderGroup representa um agrupamento de serviços do sistema que definem dependências de execução. Os serviços devem ser iniciados na ordem especificada pelo Grupo de Ordem de Carga, pois os serviços dependem uns dos outros. Esses serviços dependentes exigem que a presença dos serviços antecedentes funcione corretamente.
Exemplos
O VBScript a seguir instala um serviço chamado 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" ,"")
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista |
Servidor mínimo com suporte |
Windows Server 2008 |
Namespace |
Root\CIMV2 |
MOF |
|
DLL |
|