Artigo: 816169 - Última revisão: segunda-feira, 26 de Novembro de 2007 - Revisão: 2.7

Como criar um projecto de configuração para uma aplicação de serviço do Windows no Visual C#

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo descreve como criar um projecto de configuração para uma aplicação de serviço do Windows (anteriormente denominado "serviço de NT"). Para efectuar este procedimento, tem de criar uma solução que contém um serviço do Windows simples projecto escreve uma entrada respectivo registo de aplicação. Em seguida, adicionar um projecto de configuração para a solução para instalar o serviço Windows. Finalmente, inicie o serviço. É possível iniciar o serviço utilizando o item Serviços na pasta Ferramentas administrativas no menu ' Iniciar '.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que tem de ter:
  • Microsoft Windows 2000, Windows XP, Windows Server 2003 ou um sistema operativo de Microsoft posterior com o .NET Framework instalado
  • Microsoft Visual Studio .NET Enterprise, Microsoft Visual Studio .NET Enterprise Architect, Microsoft Visual Studio 2005 ou Microsoft Visual Studio 2008.
Este artigo pressupõe que está familiarizado com os serviços do Windows. Se não estiver familiarizado com o Windows Services, consulte a referência primeira na secção REFERENCES deste artigo.

Este artigo também pressupõe que a conta de utilizador que utilizar para instalar e executar este serviço tem as permissões que são necessários para instalar e iniciar serviços e também tem as permissões que tem de ter o registo de eventos de acesso.

Criar um projecto de configuração para um serviço do Windows

Esta secção descreve como criar um serviço do Windows projecto e a utilizar um projecto compilado configuração para instalar o serviço do Windows.

Criar um projecto de serviço do Windows

  1. Inicie o Microsoft Visual Studio.
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Clique em Visual C# Projects em Project Types e, em seguida, clique em Serviço do Windows em modelos .

    Nota No Visual Studio 2005 ou o Visual Studio 2008, expanda Visual C# em Project Types , clique em Windows e, em seguida, clique em Serviço do Windows em Templates .
  4. Tipo LogWriterService na caixa de texto Nome e, em seguida, escreva C:\ na caixa de texto de localização . Clique em OK .
  5. No Solution Explorer, clique com o botão direito do rato Service1.cs e, em seguida, clique em Código .
  6. No processador de eventos OnStart , substitua os comentários o seguinte código:
    EventLog.WriteEntry("My simple service started.");
  7. No Solution Explorer, faça duplo clique em Service1.cs .
  8. Na janela Code Editor, clique com o botão direito do rato na Vista de estrutura e, em seguida, clique em Propriedades
  9. No painel de propriedades, clique na hiperligação Adicionar o programa de instalação .
  10. No painel Propriedades para ServiceInstaller1 , alterar NomeDoServiço propriedade Service1 .
  11. Na janela Editor de códigos na vista de estrutura, clique em ServiceProcessInstaller1 .
  12. No painel de propriedades, altere a propriedade conta como sistema local (os valores de serviço local e serviço de rede estão disponíveis apenas no Microsoft Windows XP).

Utilizar um projecto compilado do programa de configuração para instalar o serviço do Windows

Depois de concluir os passos da secção anterior para configurar o projecto de serviço do Windows, siga estes passos para adicionar um projecto de implementação pacotes a aplicação de serviço para que possa ser instalada a aplicação de serviço:
  1. Adicione um novo projecto ao projecto LogWriterService. Para o fazer, siga estes passos:
    1. No Solution Explorer, clique com o botão direito do rato solução 'LogWriterService' (1 projecto) , aponte para Adicionar e, em seguida, clique em Novo projecto .
    2. Faça clique sobre o programa de configuração e projectos de implementação em Project Types e clique em Programa de configuração do Project em modelos .
    3. Na caixa de texto nome , escreva ServiceSetup .
    4. Tipo C:\ no texto de localização e, em seguida, clique em OK .
  2. Informe o projecto de implementação que ao pacote. Para o fazer, siga estes passos:
    1. No Solution Explorer, clique com o botão direito do rato ServiceSetup , aponte para Adicionar e, em seguida, clique em Project saída
    2. Na caixa de diálogo Adicionar grupo de saída do projecto , na caixa Project , clique em LogWriterService
    3. Clique em Saída principal e, em seguida, clique em OK .
  3. Para instalação correcta, adicione apenas saída primário. Para adicionar acções personalizadas, siga estes passos:
    1. No Solution Explorer, clique com o botão direito do rato ServiceSetup , aponte para Ver e, em seguida, clique em Acções personalizadas
    2. Clique com o botão direito do rato Acções personalizadas e, em seguida, clique em Adicionar acção personalizada .
    3. Clique em Pasta de aplicações e, em seguida, clique em OK .
    4. Clique em saída principal de LogWriterService (Active Directory) e, em seguida, clique em OK .

      Repare que a saída principal aparece em instalar , consolidação , recuperar e desinstalar .
  4. Por predefinição, o programa de configuração projectos não são incluídos na configuração de compilação. Para criar a solução, utilize um dos seguintes métodos:
    • método 1
      1. Clique com o botão direito do rato LogWriterService e clique em criar .
      2. Clique com o botão direito do rato ServiceSetup e, em seguida, clique em criar .
    • método 2
      1. No menu criar , clique em Gestor de configuração para criar a solução completa.
      2. Clique para seleccionar a caixa de verificação criar para ServiceSetup.
      3. Prima F7 para criar a solução completa. Quando baseia-se a solução, terá um pacote de instalação completa que está disponível para o serviço.
  5. Para instalar o serviço recém-criado, clique com o botão direito do rato ServiceSetup e, em seguida, clique em instalar .
  6. Clique na caixa de diálogo ServiceSetup , em seguinte três vezes. Repare que é apresentada uma barra de evolução enquanto instala o serviço.
  7. Quando o serviço é instalado, clique em Fechar .

Concluir lista de código

Service1.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;

namespace LogWriterService
{
	public class Service1 : System.ServiceProcess.ServiceBase
	{
		/// <summary> 
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Service1()
		{
			// The Windows.Forms Component Designer must have this call.
			InitializeComponent();

			// TODO: Add any initialization after the InitComponent call
		}

		// The main entry point for the process
		static void Main()
		{
			System.ServiceProcess.ServiceBase[] ServicesToRun;
	
			// More than one user service may run in the same process. To add
			// another service to this process, change the following line to
			// create a second service object. For example,
			//
			//   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
			//
			ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };

			System.ServiceProcess.ServiceBase.Run(ServicesToRun);
		}

		/// <summary> 
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			components = new System.ComponentModel.Container();
			this.ServiceName = "Service1";
		}

		/// <summary>
		/// Clean up any resources that are being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		/// <summary>
		/// Set things in motion so your service can do its work.
		/// </summary>
		protected override void OnStart(string[] args)
		{
			EventLog.WriteEntry("My simple service started.");
		}
 
		/// <summary>
		/// Stop this service.
		/// </summary>
		protected override void OnStop()
		{
			// TODO: Add code here to perform any tear-down necessary to stop your service.
		}
	}
}

Verificar se funciona

  1. No painel de controlo, faça duplo clique em Ferramentas administrativas e, em seguida, faça duplo clique em Serviços
  2. Clique com o botão direito do rato Service1 e, em seguida, clique em Iniciar
  3. Utilize um dos seguintes métodos para verificar que é registado um evento no registo de eventos:
    • método 1
      1. No painel de controlo, faça duplo clique em Ferramentas administrativas e, em seguida, faça duplo clique em Visualizador de eventos .
      2. Clique em Registo de aplicações no painel da esquerda e, em seguida, localize o registo de eventos para o serviço do painel da direita.
    • método 2
      1. No Explorador do servidor, expanda Servers , expanda ComputerName, expanda registos de eventos , expanda a aplicação e expanda Service1 . Lembrar-se que Service1 é o nome da classe, não o serviço próprio. Por conseguinte, Service1 é utilizado como o nome da aplicação. (Se estiver fora do âmbito deste artigo explicam como personalizar os nomes.)
      2. Mova o cursor sobre as entradas do registo. A segunda entrada da parte superior deve ler "iniciar o meu serviço simples".

Resolução de problemas

A documentação do SDK Framework indica o seguinte:
O ficheiro executável compilado que cria um projecto de aplicação de serviço tem de ser instalado no servidor antes do projecto pode funcionar de forma significativa. Não é possível depurar ou executar uma aplicação de serviço premindo F5 ou F11; não é possível executar imediatamente um serviço ou passo no respectivo código. Em vez disso, deve instalar e iniciar o serviço e, em seguida, anexe um depurador ao processo do serviço.
Para mais informações, visite o seguinte Web site da Microsoft Developer Network (MSDN):
Depuração de aplicações do serviço Windows http://msdn2.microsoft.com/en-us/library/aa984342(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa984342(VS.71).aspx)

Referências

Para criar um serviço útil do Windows que demonstra como instalar, como testar e como depurar o serviço, visite o seguinte Web site da MSDN:
Introdução ao Windows de aplicações de serviço http://msdn2.microsoft.com/en-us/library/Aa983650(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/Aa983650(VS.71).aspx)
Para mais informações, consulte o seguinte artigo do problema de Dezembro de 2001 da MSDN Magazine:
Windows Services: Classes base novos no .NET criar escrever um serviço do Windows Easy
http://msdn.microsoft.com/msdnmag/issues/01/12/NetServ/default.aspx (http://msdn.microsoft.com/msdnmag/issues/01/12/NetServ/default.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2008 Express Edition
Palavras-chave: 
kbmt kbeventlog kbsetup kbserviceprocess kbservice kbhowtomaster KB816169 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 816169  (http://support.microsoft.com/kb/816169/en-us/ )