terça-feira, 31 de janeiro de 2012

SC.exe Criando serviço

Como criar um serviço do Windows usando o Sc.exe

Dica do SistemaEste artigo aplica-se a uma versão do Windows diferente da que você está usando. O conteúdo deste artigo pode não ser relevante para você.Visite o Centro de Suporte de Windows 7

Nesta página

Sumário

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.

Mais Informações

É 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:OptionnameOptionvalue
    type=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.

Nenhum comentário:

Postar um comentário