ID do artigo: 842795 - Última revisão: quinta-feira, 29 de março de 2007 - Revisão: 3.3

Você receber a mensagem de erro "Solicitada acesso ao registro não é permitido" ao tentar criar um log de evento personalizado

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 | Recolher tudo

Sintomas

Se você efetuar logon em um computador como um usuário normal, e se você tentar usar o Microsoft Visual Studio .NET para criar um log de eventos personalizado para registrar eventos, você receberá a seguinte mensagem de erro:
Ocorreu uma exceção sem tratamento do tipo 'System.Security.SecurityException' em mscorlib.dll
Obter informações adicionais: solicitada acesso ao registro não é permitido.

Causa

Esse problema ocorre porque a conta de usuário que você usou para efetuar logon não tem permissões suficientes.

Na primeira vez que você chamar o método EventLog.CreateEventSource() para criar um log de eventos personalizado, a entrada de log de eventos personalizado é criada sob a seguinte subchave do Registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
Para criar esta entrada subchave, você deve ter permissão para gravar. No entanto, a conta de usuário regular não tem permissão para gravar. Portanto, você receber a mensagem de erro mencionada na seção "Sintomas".

Como Contornar

importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756  (http://support.microsoft.com/kb/322756/ ) Como fazer backup e restaurar o registro no Windows

Para contornar este problema, use um dos seguintes métodos:
  • Conceder permissão para criar um log de evento personalizado
  • Instalar o log de eventos personalizado como um administrador

Conceder permissão para criar um log de evento personalizado

  1. Faça logon no computador como administrador.
  2. Clique em Iniciar , clique em Executar , digite regedit na caixa Abrir e, em seguida, clique em OK . A janela do Editor do registro será exibida.
  3. Localize a seguinte subchave do Registro:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
  4. Clique com o botão direito do mouse em EventLog e, em seguida, clique em permissões . As permissões para o log de eventos de caixa de diálogo é exibida.
  5. Clique em Avançadas . A caixa de diálogo Configurações de segurança avançadas para log de eventos será exibida.
  6. Na coluna nome , clique duas vezes o grupo usuários . A caixa de diálogo Entrada de permissão para log de eventos é exibida.
  7. Marque a caixa de seleção Definir valor , selecione a caixa de seleção Criar subchave e, em seguida, clique em OK .
  8. Feche o Editor do Registro e, em seguida, faça logoff da conta do administrador.
  9. Faça logon no computador como um usuário normal.
  10. Tente criar um log de evento personalizado usando o Visual Studio. NET e tente gravar este log de eventos usando um aplicativo que é criado no Visual Studio .NET.

Instalar o log de eventos personalizado como um administrador

  1. Faça logon no computador como administrador.
  2. Use o método CreateEventSource no Visual Studio .NET para criar um log de eventos personalizado e uma fonte de log de eventos.
  3. Faça logoff da conta do administrador.
  4. Faça logon no computador como um usuário normal.
  5. Execute o aplicativo para gravar a entrada no log de evento personalizado.

Mais Informações

Etapas para reproduzir o comportamento

  1. Crie uma conta de usuário regular:
    1. Faça logon no computador como administrador.
    2. Clique com o botão direito do mouse Meu computador e clique em Gerenciar . A janela Gerenciamento do computador é exibida.
    3. Em System Tools , expanda usuários e grupos locais .
    4. Clique com o botão direito do mouse em Users e clique em Novo usuário . A caixa de diálogo Novo usuário é exibida.
    5. Digite o nome da nova conta na caixa nome do usuário e, em seguida, digite uma senha única na caixa senha e Confirmar senha caixa.
    6. Limpar o usuário deve alterar a senha no próximo logon caixa de seleção, selecione a senha nunca expira caixa de seleção e em seguida, clique em criar .
    7. Clique em Fechar para fechar a caixa de diálogo novo usuário .
  2. Adicione o usuário ao grupo usuários do depurador:
    1. Em usuários e grupos locais , clique em usuários .
    2. Na coluna nome no painel à direita da janela Gerenciamento do computador, clique com o botão direito do mouse no nome da nova conta e, em seguida, clique em Propriedades . A caixa de diálogo de propriedades da nova conta aparece.
    3. Clique na guia Membro de e, em seguida, clique em Adicionar . A caixa de diálogo Selecionar grupos será exibida.
    4. Clique em Avançadas . A caixa de diálogo Selecionar grupos será exibida.
    5. Clique em Localizar agora . Os grupos disponíveis aparecem na caixa de diálogo Selecionar grupos .
    6. Na coluna Nome (RDN) , clique em Usuários depuradores e, em seguida, clique em OK .
    7. Na caixa de diálogo Grupos selecionados , clique em OK .
    8. Na caixa de diálogo Propriedades da nova conta, clique em OK .
    9. Faça logoff da conta do administrador.
  3. Crie um aplicativo do Windows:
    1. Fazer logon no computador usando a conta de usuário regular que você criou em "Etapa 1 - criar uma conta de usuário regular".
    2. Inicie o Visual Studio NET..
    3. No menu arquivo , aponte para novo e, em seguida, clique em Project . A caixa de diálogo New Project é exibida.
    4. Em Project Types , clique em projetos translation from VPE for Csharp Visual .
    5. Em modelos , clique em Windows Application .
    6. Na caixa nome , digite o nome de um projeto e, em seguida, clique em OK . Por padrão, o formulário de Form1 aparece.
    7. Clique no formulário de Form1 com o botão direito e clique em Exibir código . O arquivo Form1.cs aparece.
    8. Substitua o código existente com o código a seguir:
      using System;
      using System.Drawing;
      using System.Collections;
      using System.ComponentModel;
      using System.Windows.Forms;
      using System.Data;
      using System.Diagnostics;
      
      namespace WindowsApplication1
      {
      	/// <summary>
      	/// Summary description for Form1.
      	/// </summary>
      	public class Form1 : System.Windows.Forms.Form
      	{
      		private System.Diagnostics.EventLog eventLog1;
      		private System.Windows.Forms.Button button1;
      		/// <summary>
      		/// Required designer variable.
      		/// </summary>
      		private System.ComponentModel.Container components = null;
      
      	
      
      
      		public Form1()
      		{
      			//
      			// Required for Windows Form Designer support
      			//
      			InitializeComponent();
      
      			if(!EventLog.SourceExists("Source1"))
      			{
      				EventLog.CreateEventSource("Source1","MyLog1");
      			}
      			eventLog1.Source = "Source1";
      			eventLog1.Log = "MyLog1";
      			//
      			// TODO: Add any constructor code after InitializeComponent call
      			//
      		}
      		
      		
      		
      		
      		/// <summary>
      		/// Clean up any resources being used.
      		/// </summary>
      		protected override void Dispose( bool disposing )
      		{
      			if( disposing )
      			{
      				if (components != null) 
      				{
      					components.Dispose();
      				}
      			}
      			base.Dispose( disposing );
      		}
      
      		#region Windows Form Designer generated code
      		/// <summary>
      		/// Required method for Designer support - do not modify
      		/// the contents of this method with the code editor.
      		/// </summary>
      		private void InitializeComponent()
      		{
      			this.eventLog1 = new System.Diagnostics.EventLog();
      			this.button1 = new System.Windows.Forms.Button();
      			((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
      			this.SuspendLayout();
      			// 
      			// eventLog1
      			// 
      			this.eventLog1.SynchronizingObject = this;
      			// 
      			// button1
      			// 
      			this.button1.Location = new System.Drawing.Point(104, 104);
      			this.button1.Name = "button1";
      			this.button1.TabIndex = 0;
      			this.button1.Text = "button1";
      			this.button1.Click += new System.EventHandler(this.button1_Click);
      			// 
      			// Form1
      			// 
      			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      			this.ClientSize = new System.Drawing.Size(292, 273);
      			this.Controls.Add(this.button1);
      			this.Name = "Form1";
      			this.Text = "Form1";
      			((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
      			this.ResumeLayout(false);
      
      		}
      		#endregion
      
      		/// <summary>
      		/// The main entry point for the application.
      		/// </summary>
      		[STAThread]
      		static void Main() 
      		{
      			Application.Run(new Form1());
      		}
      		
      		private void button1_Click(object sender, System.EventArgs e)
      		{
      			eventLog1.WriteEntry("The Button1 Is Clicked");
      		}
      	}
      }
      
    9. No menu arquivo , clique em Salvar Form1.cs para salvar o arquivo.
  4. Execute o projeto:
    1. No menu Build , clique em Build Solution .
    2. Execute o projeto. Você receberá a mensagem de erro mencionada na seção "Sintomas".
Observação A segurança de permissão para gravar a subchave de registro de log de eventos é imposta em nível de API de log de eventos no sistema operacional. Por padrão, as permissões de log de eventos personalizado são mesmas que as permissões de log de eventos do aplicativo.

Referências

Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:
Criando e removendo logs de eventos personalizado
http://msdn2.microsoft.com/en-us/library/49dwckkz(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/49dwckkz(vs.71).aspx)

Gravar entradas de logs de eventos
http://msdn2.microsoft.com/en-us/library/k00ce235(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/k00ce235(vs.71).aspx)

Adicionando o seu aplicativo como uma fonte de entradas do log de eventos
http://msdn2.microsoft.com/en-us/library/xz73e171(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/xz73e171(vs.71).aspx)

Segurança de log de eventos
http://msdn2.microsoft.com/en-us/library/aa363658.aspx (http://msdn2.microsoft.com/en-us/library/aa363658.aspx)
Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
329291  (http://support.microsoft.com/kb/329291/ ) Mensagem de erro "Solicitou acesso ao registro não é permitido" ao aplicativo ASP.NET tenta gravar novo EventSource no log de eventos

A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Palavras-chave: 
kbmt kbtshoot kberrmsg kbregistry kbpermissions kbeventlog kbaccounts kbprb KB842795 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 842795  (http://support.microsoft.com/kb/842795/en-us/ )