Artigo: 842795 - Última revisão: quinta-feira, 29 de Março de 2007 - Revisão: 3.3

Recebe a mensagem de erro "Pedido não é permitido acesso de registo" quando tenta criar um registo de eventos 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 | Reduzir tudo

Sintomas

Se iniciar sessão num computador como um utilizador normal e se tentar utilizar o Microsoft Visual Studio .NET para criar um registo de eventos personalizado para registar eventos, poderá receber a seguinte mensagem de erro:
Ocorreu uma excepção não processada do tipo 'System.Security.SecurityException' na mscorlib.dll
Obter informações adicionais: pedido acesso ao registo não é permitido.

Causa

Este problema ocorre porque a conta de utilizador utilizada para iniciar a sessão não tem permissões suficientes.

Na primeira vez que chamar o método EventLog.CreateEventSource() para criar um registo de eventos personalizado, a entrada de registo de eventos personalizado é criada na seguinte subchave de registo:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
Para criar esta entrada da subchave, tem de ter permissão de escrita. No entanto, a conta de utilizador normal não tem permissão de escrita. Por conseguinte, recebe a mensagem de erro mencionada na secção "Sintomas".

Como contornar

importante Esta secção, método ou tarefa contém passos que indicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo de forma incorrecta. Por conseguinte, certifique-se de que segue estes passos cuidadosamente. Criar uma para protecção adicional, cópia de segurança do registo antes de o modificar. Em seguida, pode restaurar o registo se ocorrer um problema. Para obter mais informações sobre como efectuar uma cópia de segurança e restaurar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
322756  (http://support.microsoft.com/kb/322756/ ) Como efectuar uma cópia de segurança e restaurar o registo no Windows

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

Conceder permissão para criar um registo de eventos personalizado

  1. Inicie sessão no computador como administrador.
  2. Clique em Iniciar , clique em Executar , escreva regedit na caixa Abrir e, em seguida, clique em OK . Aparece a janela do Editor de registo.
  3. Localize a seguinte subchave do registo:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
  4. Clique com o botão direito do rato em registo de eventos e, em seguida, clique em permissões . As permissões para registo de eventos é apresentada a caixa de diálogo.
  5. Clique em Avançadas . A caixa de diálogo Definições avançadas de segurança para o registo de eventos é apresentada.
  6. Na coluna nome , faça duplo clique no grupo de utilizadores . A caixa de diálogo Permissões de entrada de registo de eventos é apresentada.
  7. Seleccione a caixa de verificação Definir valor , seleccione a caixa de verificação Criar subchave e, em seguida, clique em OK .
  8. Saia do Editor de registo e reinicie da conta de administrador.
  9. Inicie sessão no computador como um utilizador normal.
  10. Tente criar um registo de eventos personalizado utilizando o Visual Studio .NET e tente escrever este registo de eventos utilizando uma aplicação criada no Visual Studio. NET.

Instalar o registo de eventos personalizado como um administrador

  1. Inicie sessão no computador como administrador.
  2. Utilize o método CreateEventSource no Visual Studio .NET para criar um registo de eventos personalizado e uma origem de registo de eventos.
  3. Termine a sessão da conta de administrador.
  4. Inicie sessão no computador como um utilizador normal.
  5. Execute a aplicação para escrever a entrada de registo de eventos personalizado.

Mais Informação

Passos para reproduzir o comportamento

  1. Crie uma conta de utilizador normal:
    1. Inicie sessão no computador como administrador.
    2. Clique com o botão direito do rato em Meu computador e, em seguida, clique em Gerir . Aparece a janela Gestão de computadores.
    3. Em Ferramentas do sistema , expanda utilizadores e grupos locais .
    4. Clique com o botão direito do rato em utilizadores e, em seguida, clique em Novo utilizador . A caixa de diálogo Novo utilizador é apresentada.
    5. Escreva o nome da nova conta na caixa nome de utilizador e, em seguida, escreva uma palavra-passe única na caixa de palavra-passe e Confirmar palavra-passe caixa.
    6. Limpar o utilizador deve alterar a palavra-passe no próximo início de sessão caixa de verificação, seleccione a palavra-passe nunca expira Verifique caixa e, em seguida, clique em criar .
    7. Clique em Fechar para fechar a caixa de diálogo novo utilizador .
  2. Adicione o utilizador ao grupo utilizadores do depurador:
    1. Em utilizadores e grupos locais , clique em utilizadores .
    2. Na coluna nome no painel da direita da janela da gestão de computadores, clique com o botão direito do rato no nome da nova conta e, em seguida, clique em Propriedades . A caixa de diálogo Propriedades da nova conta é apresentada.
    3. Clique no separador Membro de e, em seguida, clique em Adicionar . A caixa de diálogo Seleccionar grupos é apresentada.
    4. Clique em Avançadas . A caixa de diálogo Seleccionar grupos é apresentada.
    5. Clique em Localizar agora . Os grupos disponíveis aparecem na caixa de diálogo Seleccionar grupos .
    6. Na coluna Nome (RDN) , clique em Utilizadores depurador e, em seguida, clique em OK .
    7. Na caixa de diálogo Grupos seleccionados , clique em OK .
    8. Na caixa de diálogo Propriedades da nova conta, clique em OK .
    9. Termine a sessão da conta de administrador.
  3. Crie uma aplicação do Windows:
    1. Inicie sessão no computador utilizando a conta de utilizador normal criado no "Passo 1 - criar uma conta de utilizador normal".
    2. Inicie o Visual Studio NET..
    3. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto . A caixa de diálogo novo projecto é apresentada.
    4. Em Project Types , clique em Visual C# Projects .
    5. Em modelos , clique em Windows Application .
    6. Na caixa nome , escreva o nome de um projecto e, em seguida, clique em OK . Por predefinição, aparece o formulário Form1.
    7. Clique com o botão direito do rato no formulário Form1 e clique em Ver código . O ficheiro de Form1.cs é apresentado.
    8. Substitua o código existente com o seguinte código:
      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 ficheiro , clique em Guardar Form1.cs para guardar o ficheiro.
  4. Execute o projecto:
    1. No menu criar , clique em criar soluções .
    2. Execute o projecto. Poderá receber a mensagem de erro mencionada na secção "Sintomas".
Nota A segurança para a permissão escrever para a subchave de registo de eventos é imposta a nível API de registo de eventos no sistema operativo. Por predefinição, as permissões de registo de eventos personalizados são mesmos que as permissões de registo de eventos da aplicação.

Referências

Para obter mais informações, visite os seguintes Web sites da Microsoft Developer Network (MSDN):
Criar e remover registos de eventos personalizados
http://msdn2.microsoft.com/en-us/library/49dwckkz(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/49dwckkz(vs.71).aspx)

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

Adicionar a aplicação como uma origem de entradas do registo de eventos
http://msdn2.microsoft.com/en-us/library/xz73e171(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/xz73e171(vs.71).aspx)

Registo de segurança 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 de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
329291  (http://support.microsoft.com/kb/329291/ ) Mensagem de erro "Pedido não é permitido acesso de registo" quando a aplicação do ASP.NET tenta escrever Origemdoevento novo no registo 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 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: 842795  (http://support.microsoft.com/kb/842795/en-us/ )