PRB: Fehlermeldung "Der angeforderte Registrierungszugriff ist unzulässig" beim Versuch einer ASP.NET-Anwendung, eine neue Quelle in das Ereignisprotokoll zu schreiben

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 329291 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
329291 PRB: "Requested Registry Access Is Not Allowed" Error Message When ASP.NET Application Tries to Write New EventSource in the EventLog
Wichtig: Dieser Artikel enthält Informationen zum Bearbeiten der Registrierung. Vergewissern Sie sich, dass Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Erstellen einer Sicherungskopie, zum Wiederherstellen und Bearbeiten der Registrierung finden Sie in folgendem Artikel der Microsoft Knowledge Base:
256986 Beschreibung der Microsoft Windows-Registrierung
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie mit ASP.NET eine neue Quelle im Ereignisprotokoll erstellen, erhalten Sie möglicherweise folgende Fehlermeldung:
System.Security.SecurityException: Der angeforderte Registrierungszugriff ist unzulässig.

Ursache

Standardmäßig ist das Benutzertoken des ASP.NET-Workerprozesses "ASPNET" (bzw. "NetworkService" für Anwendungen, die auf Internet Information Services [IIS] 6.0 ausgeführt werden). Das im Abschnitt "Problembeschreibung" dieses Artikels beschriebene Problem tritt auf, wenn Ihr Benutzerkonto nicht über ausreichende Benutzerrechte zum Erstellen einer neuen Quelle verfügt.

Lösung

Warnung: Die falsche Verwendung des Registrierungseditors kann schwerwiegende Probleme verursachen, die das gesamte System betreffen und eine Neuinstallation des Betriebssystems erforderlich machen. Microsoft kann nicht garantieren, dass Probleme, die von einer falschen Verwendung des Registrierungseditors herrühren, behoben werden können. Benutzen Sie den Registrierungseditor auf eigene Verantwortung. Damit Sie dieses Problem beheben können, muss ein Benutzer mit Administratorrechten die Quelle erstellen, bevor Sie die ASP.NET-Webanwendung ausführen. Wenden Sie eines der folgenden Verfahren an, um eine Quelle zu erstellen.

Erstes Verfahren

Erstellen Sie im Registrierungseditor unterhalb des Ereignisprotokolls Application eine Quelle. Gehen Sie hierzu folgendermaßen vor:
  1. Klicken Sie auf Start und anschließend auf Ausführen.
  2. Geben Sie im Textfeld Öffnen den Befehl regedit ein.
  3. Gehen Sie zum folgenden Registrierungsunterschlüssel:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
  4. Klicken Sie mit der rechten Maustaste auf den Unterschlüssel Application, zeigen Sie auf Neu, und klicken Sie anschließend auf Schlüssel.
  5. Geben Sie als Namen des Schlüssels TEST ein.
  6. Schließen Sie den Registrierungseditor.

Zweites Verfahren

Die Klasse EventLogInstaller im Namespace System.Diagnostics ermöglicht Ihnen die Installation und Konfiguration eines Ereignisprotokolls, aus dem Ihre Anwendung während der Ausführung liest bzw. in das sie schreibt. Verwenden Sie EventLogInstaller zum Erstellen einer Quelle. Gehen Sie hierzu folgendermaßen vor:
  1. Erstellen Sie in Microsoft Visual Basic .NET oder Microsoft Visual C# .NET eine neue Klassenbibliothek mit dem Namen "EventLogSourceInstaller". Standardmäßig wird die Datei Class1.vb bzw. Class1.cs erstellt.
  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf EventLogSourceInstaller, und klicken Sie danach auf Verweis hinzufügen.
  3. Doppelklicken Sie im Dialogfeld Verweis hinzufügen auf System.Configuration.Install.dll, und klicken Sie dann auf OK.
  4. Benennen Sie "Class1.vb" bzw. "Class1.cs" um in "MyEventLogInstaller.vb" bzw. "MyEventLogInstaller.cs".
  5. Ersetzen Sie den vorhandenen Code in "MyEventLogInstaller.vb" oder "MyEventLogInstaller.cs" durch folgenden Beispielcode:

    Visual Basic .NET-Beispiel
     _
    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 
    
    Visual C# .NET-Beispiel
    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. Klicken Sie im Menü Erstellen auf Projektmappe erstellen, um EventLogSourceInstaller.dll zu erstellen.
  7. Öffnen Sie die Visual Studio .NET-Eingabeaufforderung.
  8. Wechseln Sie an der Eingabeaufforderung in den Ordner, in dem sich EventLogSourceInstaller.dll befindet.
  9. Führen Sie den folgenden Befehl aus, um die Quelle zu erstellen:
    InstallUtil EventLogSourceInstaller.dll

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie in Visual Basic .NET oder Visual C# .NET eine neue ASP.NET-Webanwendung. Standardmäßig wird die Datei WebForm1.aspx erstellt.
  2. Ersetzen Sie in der HTML-Ansicht von WebForm1.aspx den vorhandenen Code durch folgenden Beispielcode:

    Visual Basic .NET-Beispiel
    <%@ 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>
    
    Visual C# .NET-Beispiel
    <%@ 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. Klicken Sie im Menü Debuggen auf Starten, um die Seite WebForm1.aspx im Browser anzuzeigen.
  4. Geben Sie in TextBox einen beliebigen Text ein, und klicken Sie dann auf Write to event log (In Ereignisprotokoll schreiben).
  5. Die im Abschnitt "Problembeschreibung" dieses Artikels beschriebene Fehlermeldung wird angezeigt.
  6. Erstellen Sie, wie im Abschnitt "Lösung" beschrieben, eine Quelle, und kommentieren Sie den folgenden Code in WebForm1.aspx aus:
    EventLog.CreateEventSource(ev.Source, "Application")
  7. Wiederholen Sie die Schritte 3 und 4.

Informationsquellen

Weitere Informationen finden Sie auf folgenden Websites von Microsoft:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbwlkWalkthroughCreatingEventLogInstallers.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticseventlogclasstopic.asp

Eigenschaften

Artikel-ID: 329291 - Geändert am: Montag, 3. Dezember 2007 - Version: 2.6
Die Informationen in diesem Artikel beziehen sich auf:
  • 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 version 5.1
  • Microsoft Internet Information Services 6.0
Keywords: 
kberrmsg kbwebforms kbsecurity kbprb KB329291
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com