DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 329291 - Ultima modifica: lunedì 3 dicembre 2007 - Revisione: 2.10

 

In questa pagina

Sintomi

Quando è possibile utilizzare ASP.NET per creare una nuova origine eventi nel registro eventi, viene potrebbe essere visualizzato il seguente messaggio di errore:
System.Security.SecurityException: Accesso di richiesta del Registro di sistema non è consentito.

Cause

Per impostazione predefinita, il token dell'utente del processo di lavoro ASP.NET è ASPNET (o NetworkService per le applicazioni eseguite in Internet Information Services (IIS 6.0). Il problema nella sezione "Sintomi" si verifica perché l'account non dispone dei diritti utente corretti per creare un'origine eventi.

Risoluzione

importante Questa sezione, metodo o l'attività sono contenute procedure viene illustrato come modificare il Registro di sistema. Tuttavia, possono causare seri problemi se si modifica il Registro di sistema in modo errato. Pertanto, assicurarsi che questa procedura con attenzione. Per maggiore protezione, è eseguire il backup del Registro di sistema prima di modificarlo. È quindi possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e ripristino del Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
322756  (http://support.microsoft.com/kb/322756/ ) Come eseguire il backup e il ripristino del Registro di sistema in Windows
Per risolvere il problema, l'utente un utente con diritti amministrativi necessario creare l'origine eventi prima di eseguire l'applicazione Web di ASP.NET. Per creare un'origine eventi, utilizzare uno dei metodi descritti di seguito.

Primo approccio

Creare un'origine di eventi in un registro eventi dell'applicazione nell'editor del Registro di sistema. Per effettuare questa operazione, attenersi alla seguente procedura:
  1. Fare clic su Start e quindi fare clic su Esegui .
  2. Nella casella testo Apri , digitare regedit .
  3. Individuare la seguente sottochiave del Registro di sistema:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
  4. Fare clic con il pulsante destro del mouse la sottochiave applicazione , scegliere Nuovo , quindi chiave .
  5. Tipo di TEST per il nome della chiave.
  6. Chiudere l'editor del Registro di sistema.

Approccio al secondo

La classe di EventLogInstaller nello spazio dei nomi System.Diagnostics consente di installare e configurare un log eventi che l'applicazione legge o scrive durante l'esecuzione. È possibile creare un'origine eventi utilizzando EventLogInstaller. Per effettuare questa operazione, attenersi alla seguente procedura:
  1. È possibile utilizzare Microsoft Visual Basic .NET o Microsoft Visual C# .NET per creare una nuova Libreria di classi denominato EventLogSourceInstaller. Per impostazione predefinita, il file Class1.vb o il file di Class1.cs non viene creato.
  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse su EventLogSourceInstaller e quindi fare clic su Aggiungi riferimento .
  3. Nella finestra di dialogo Aggiungi riferimento , fare doppio clic su System.Configuration.Install.dll e scegliere OK .
  4. Rinominare il Class1.vb\Class1.cs MyEventLogInstaller.vb\MyEventLogInstaller.cs.
  5. Sostituire il codice esistente in MyEventLogInstaller.vb o MyEventLogInstaller.cs con il codice di esempio riportato di seguito:

    esempio .NET per Visual Basic
    Imports System.Diagnostics
    Imports System.Configuration.Install
    Imports System.ComponentModel
    
    <RunInstaller(True)> _
    Public Class MyEventLogInstaller
        Inherits Installer
        Private myEventLogInstaller As EventLogInstaller
    
        Public Sub New()
            ' Create an instance of 'EventLogInstaller'.
            myEventLogInstaller = New EventLogInstaller()
            ' Set the 'Source' of the event log, to be created.
            myEventLogInstaller.Source = "TEST"
            ' Set the 'Log' that the source is created in.
            myEventLogInstaller.Log = "Application"
            ' Add myEventLogInstaller to 'InstallerCollection'.
            Installers.Add(myEventLogInstaller)
        End Sub 
    End Class 
    
    Esempio di visual C# .NET
    using System;
    using System.Diagnostics;
    using System.ComponentModel;
    using System.Configuration.Install;
    
    
    namespace EventLogSourceInstaller 
    {
    	[RunInstaller(true)]
    	public class MyEventLogInstaller : Installer
    	{
    		private EventLogInstaller myEventLogInstaller;
    
    		public MyEventLogInstaller()
    		{
    			//Create Instance of EventLogInstaller
    			myEventLogInstaller = new EventLogInstaller();
    
    			// Set the Source of Event Log, to be created.
    			myEventLogInstaller.Source = "TEST";
    
    			// Set the Log that source is created in
    			myEventLogInstaller.Log = "Application";
    			
    			// Add myEventLogInstaller to the Installers Collection.
    			Installers.Add(myEventLogInstaller);
    		}
    	}
    }
    
    
  6. Scegliere dal menu Genera , Genera soluzione per creare EventLogSourceInstaller.dll .
  7. Aprire il Visual Studio .NET prompt dei comandi.
  8. Al prompt dei comandi, passare alla cartella in cui si trova EventLogSourceInstaller.dll .
  9. Eseguire il comando seguente per creare il EventSource:
    InstallUtil EventLogSourceInstaller.dll

Informazioni

Procedura per riprodurre il problema.

  1. È possibile utilizzare Visual Basic .NET o Visual C# .NET per creare una nuova Applicazione Web ASP.NET . Per impostazione predefinita, viene creato il file WebForm1.aspx .
  2. Nella visualizzazione HTML di WebForm1.aspx , sostituire il codice esistente con il codice di esempio riportato di seguito:

    Visual Basic .NET esempio
    <%@ Page Language="vb" AutoEventWireup="true" %>
    <%@ Import namespace="System.Diagnostics" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<script language="VB" runat="server">
    	Sub WriteEvent_Click(Src As Object, e As EventArgs)
    	Dim ev As New EventLog("Application")
    	' Event's Source name
    	ev.Source = "TEST" 
    	
    	EventLog.CreateEventSource(ev.Source, "Application")
    	
    Try
    	 ev.WriteEntry(TextBox1.Text)
    	Catch b as exception
    	 Response.write ("WriteEntry " & b.message & "<br>")
    	End Try
    	ev = Nothing
    	End Sub
    	</script>
    
    	<body>
    		<form id="Form1" runat="server">
    			Event message: 
    			<asp:textbox id="TextBox1" runat="server" Width="233px"></asp:textbox>
    			<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Write to event log"></asp:button>
    		</form>
    	</body>
    </HTML>
    
    Esempio di visual C# .NET
    <%@ Page Language="c#" AutoEventWireup="true" %>
    <%@ Import namespace="System.Diagnostics" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<script language="C#" runat="server">
    	void WriteEvent_Click(Object Src, EventArgs e)
    	{
    	EventLog ev = new EventLog("Application");
    	// Event's Source name
    	ev.Source = "TEST";  
    	
    	EventLog.CreateEventSource(ev.Source, "Application");
    
    			try
    			{
    				ev.WriteEntry(TextBox1.Text);
    			}
    			catch (Exception b)
    			{
    				Response.Write("WriteEntry " + b.Message + "<br>");
    			}
    			ev = null;
    	}
    	</script>
    
    	<body>
    		<form id="Form1" runat="server">
    			Event message: 
    			<asp:textbox id="TextBox1" runat="server" Width="233px"></asp:textbox>
    			<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Write to event log"></asp:button>
    		</form>
    	</body>
    </HTML>
  3. Scegliere dal menu debug , l'opzione Start per visualizzare la pagina WebForm1.aspx nel browser.
  4. Digitare il testo in TextBox e quindi fare clic su scrivere nel registro eventi .
  5. Il messaggio di errore descritto nella sezione "Sintomi" sezione di questo articolo viene visualizzata.
  6. Per risolvere il problema, creare un'origine eventi, come descritto nella sezione "Risoluzione" e commento il codice riportato di seguito in WebForm1.aspx :
    EventLog.CreateEventSource(ev.Source, "Application")
  7. Ripetere i passaggi 3 e 4.

Riferimenti

Per ulteriori informazioni, visitare i seguenti siti Web Microsoft:
http://msdn2.microsoft.com/en-us/library/f5dcf6h3(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/f5dcf6h3(vs.71).aspx)
http://msdn2.microsoft.com/en-us/library/system.diagnostics.eventlog(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.diagnostics.eventlog(vs.71).aspx)

Le informazioni in questo articolo si applicano a:
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Services 6.0
Chiavi: 
kbmt kberrmsg kbwebforms kbsecurity kbprb KB329291 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 329291  (http://support.microsoft.com/kb/329291/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store