Para criar e iniciar remotamente um serviço a partir da
linha de comando, é possível usar a ferramenta SC (Sc.exe) incluída no Resource
Kit.
Apesar de poder usar as ferramentas Netsvc.exe e Instsrv.exe
para iniciar um serviço em um computador remoto, essas ferramentas não oferecem
a possibilidade de criar um serviço remotamente.
OBSERVAÇÃO: A ferramenta Srvinstw.exe é a versão da GUI (interface gráfica
do usuário) usada para criar serviços remotos. A Srvinstw.exe não é uma
ferramenta de linha de comando.
É possível usar o Sc.exe no auxílio do desenvolvimento de
serviços para o Windows. O Sc.exe, que é fornecido no Resource Kit, implementa
chamadas para todas as funções da API (interface de programação de aplicativo)
de controle de serviço do Windows. É possível definir os parâmetros para essas
funções especificando-as na linha de comando. O Sc.exe também exibe o status do
serviço e recupera os valores armazenados nos campos de estrutura de status. A
ferramenta também permite que você especifique o nome de um computador remoto
de modo que você possa chamar as funções da API de serviço ou visualizar as
estruturas de status do serviço no computador remoto.
O Sc.exe
também permite que você chame quaisquer funções da API de controle de serviço e
varie qualquer parâmetro a partir da linha de comando. A vantagem é que ele
oferece uma maneira conveniente de criar ou configurar as informações de
serviço no Registro e no banco de dados do Gerenciador de controle de serviço.
Não é necessário configurar o serviço criando manualmente entradas no Registro
e reiniciando o computador para forçar a atualização do Gerenciador de controle
de serviço e de seu banco de dados.
O Sc.exe usa a seguinte sintaxe:
Sintaxe1 (use a Sintaxe1 para executar o Sc.exe)
sc [Servername] Command Servicename [Optionname= Optionvalue...]
Sintaxe2 (use a Sintaxe2 para exibir as informações de ajuda,
exceto para o comando
query)
sc [Command]
Parâmetros
- Servername
Opcional. Especifica o nome do servidor quando quiser
executar os comandos em um computador remoto. O nome deve iniciar com duas
barras (\) (por exemplo, \\meu servidor). Para
executar o Sc.exe no computador local, não forneça esse parâmetro. - Comando
Especifica o comando sc. Observe que muitos dos comandos sc exigem privilégios administrativos no computador especificado. O
Sc.exe suporta os seguintes comandos:Config
Altera a configuração de um serviço (persistente).
Continue
Envia uma solicitação de controle Continue para um serviço.
Control
Envia um controle para um serviço.
Create
Cria um serviço (adiciona-o ao Registro).
Delete
Exclui um serviço (do Registro).
EnumDepend
Enumera dependências de serviço.
GetDisplayName
Obtém o DisplayName (nome de exibição) para um serviço.
GetKeyName
Obtém o ServiceKeyName (nome da chave do serviço) para um
serviço.
Interrogate
Envia uma solicitação de controle Interrogate para um
serviço.
Pause
Envia uma solicitação de controle Pause para um serviço.
qc
Consulta a configuração para o serviço. Para obter
informações detalhadas, consulte a seção de referência, "SC QC".
Query
Consulta o status para um serviço ou enumera o status para
tipos de serviços. Para obter informações detalhadas, consulte a seção de
referência, "SC QUERY".
Start
Inicia um serviço
Stop
Envia uma solicitação Stop para um
serviço.
- Servicename
Especifica o nome fornecido à chave Service no Registro.
Observe que isso é diferente do nome de exibição (que é o que é visto com o
comando net start e com a Ferramenta Serviços no Painel de controle). O Sc.exe usa
o nome da chave do serviço como o identificador primário para o
serviço. - Optionname
Os parâmetros Optionname e Optionvalue permitem a
especificação dos nomes e dos valores dos parâmetros de comando opcionais.
Observe que não existe espaço entre Optionname e o sinal de igual. É possível
fornecer um, mais de um ou nenhum par de nomes e valores opcionais de
parâmetro. - Optionvalue
Especifica o valor para o parâmetro nomeado por Optionname.
O intervalo de valores válido é normalmente restringido para cada Optionname.
Para obter uma lista de valores válidos, solicite ajuda para cada
comando.
Muitos dos comandos exigem privilégios de Administrador.
Verifique se está como administrador do computador no qual o desenvolvimento
está sendo realizado.
O comando
sc create cria uma entrada para o serviço no Registro e no banco de dados
do Gerenciador de controle de serviço.
Sintaxe
sc [Servername] create Servicename [Optionname=Optionvalue...
Parâmetros
- Servername
Opcional. Especifica o nome do servidor quando quiser
executar os comandos em um computador remoto. O nome deve iniciar com duas
barras (\) (por exemplo, \\meu servidor). Para
executar o SC no computador local, não forneça esse parâmetro. - Servicename
Especifica o nome fornecido à chave service no Registro.
Observe que isso é diferente do nome de exibição, que é o visto com o comando net start e com a Ferramenta Serviços no Painel de controle). O Sc.exe usa
o nome da chave do serviço como o identificador primário para o
serviço. - Optionname
Os parâmetros Optionname e Optionvalue permitem a
especificação dos nomes e dos valores dos parâmetros opcionais. Observe que não
existe espaço entre Optionname e o sinal de igual. É possível fornecer um, mais
de um ou nenhum par de nomes e de valores opcionais de parâmetro. O comando sc query suporta os seguintes valores:OptionnameOptionvaluetype=own, share, interact, kernel, filesys
Tipo de serviço que
deseja criar. O Optionvalues inclui tipos usados pelos drivers.
(padrão =
compartilhamento)
start=boot, system, auto, demand, disabled
Tipo de inicialização
para o serviço. O Optionvalues inclui tipos usados pelos drivers.
(padrão
= demanda)
error=normal, severe, critical, ignore
Gravidade do erro se o
serviço não iniciar durante a inicialização.
(padrão = normal)
binPath=(seqüência)
Nome do caminho para o arquivo binário do
serviço. Não existe um padrão para esse parâmetro. Essa seqüência deve ser
fornecida.
group=(seqüência)
Nome do grupo do qual esse serviço é um membro. A
lista de grupos é armazenada no Registro em ServiceGroupOrder.
(padrão =
nada)
tag=(seqüência)
Se essa seqüência for definida como "yes", o
Sc.exe obterá um TagId da chamada CreateService. No entanto, ele não exibirá a
tag.
(padrão = nada)
depend=(seqüência separada por espaço)
Nomes de serviços ou grupos
que devem iniciar antes de iniciar esse serviço.
obj=(seqüência)
Nome da conta na qual o serviço é executado. Para
os drivers, esse é o nome do objeto de driver do Windows.
(padrão =
LocalSystem)
DisplayName=(seqüência)
Uma seqüência pode ser usada pelos programas de
interface do usuário para identificar o serviço.
password=(seqüência)
Uma seqüência de senha. Isso é necessário se uma
conta diferente de LocalSystem for usada.
Optionvalue Especifica o valor para o parâmetro nomeado pelo Optionname.
Consulte a referência do Optionname para obter uma lista de valores suportados.
Quando uma seqüência é inserida, o uso de aspas vazias significa que uma
seqüência vazia está sendo passada.
OBSERVAÇÃO: O comando
sc create executa as operações da função de API CreateService.
O
seguinte exemplo cria uma entrada do Registro para o serviço chamado
"NewService" no computador chamado
\\
computador_remoto:
sc \\computador_remoto create newservice binpath= c:\nt\system32\newserv.exe
Por padrão, esse serviço é criado como um WIN32_SHARE_PROCESS com
um tipo de inicialização SERVICE_DEMAND_START. Ele não possui nenhuma
dependência e executa no contexto de segurança LocalSystem.
O
seguinte exemplo cria o serviço no computador local como um serviço de
inicialização automática que executa no seu próprio processo. Ele possui
dependências no grupo TDI e no serviço NetBIOS. Observe que é necessário
acrescentar aspas ao redor da lista de dependências separadas por espaço.
sc create newservice binpath= c:\nt\system32\newserv.exe type= own start= auto depend= "+tdi netbios"
Para obter detalhes adicionais sobre a ferramenta Sc.exe,
consulte o documento Sc-dev.txt no Resource Kit. Esse documento descreve o
Sc.exe detalhadamente.