PRB: ข้อความแสดง "การเข้าถึงรีจิสทรีที่ร้องขอการไม่ได้" ข้อผิดพลาดข้อเมื่อโปรแกรมประยุกต์ ASP.NET พยายามเขียน EventSource ใหม่ในการ EventLog

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 329291 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อคุณใช้ ASP.NET เพื่อสร้างแหล่งที่มาของเหตุการณ์ใหม่ในแฟ้มบันทึกของเหตุการณ์ คุณอาจได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
System.Security.SecurityException: การเข้าถึงรีจิสทรีที่ร้องขอไม่ได้รับอนุญาต

สาเหตุ

โดยค่าเริ่มต้น โทเค็นผู้ใช้ของกระบวนการของผู้ปฏิบัติงาน ASP.NET ถูก ASPNET (หรือ NetworkService สำหรับโปรแกรมประยุกต์ที่รันในบริการข้อมูลทางอินเทอร์เน็ต [IIS] 6.0) เกิดปัญหาในส่วน "อาการ" ได้เนื่องจากบัญชีของคุณไม่มีสิทธิ์ของผู้ใช้ที่ถูกต้องในการสร้างแหล่งมีเหตุการณ์

การแก้ไข

สิ่งสำคัญนี้ส่วน วิธี หรืองานประกอบด้วยขั้นตอนที่บอกวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีไม่ถูกต้อง ดังนั้น โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม ให้สำรองรีจิสทรีก่อนทำการปรับเปลี่ยน เพื่อที่คุณจะสามารถคืนค่ารีจิสทรีได้หากมีปัญหาเกิดขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่ารีจิสทรี โปรดคลิกที่หมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
322756วิธีการสำรองข้อมูลและคืนค่ารีจิสทรีใน Windows
เมื่อต้องการแก้ไขปัญหานี้ ผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบต้องสร้างแหล่งเหตุการณ์ก่อนที่คุณเรียกใช้แอพลิเคชันเว็บของ ASP.NET เมื่อต้องการสร้างเป็นแหล่งของเหตุการณ์ ใช้ approaches ที่ต่อไปนี้อย่างใดอย่างหนึ่ง

วิธีแรก

สร้างแหล่งมีเหตุการณ์ภายใต้การโปรแกรมประยุกต์แฟ้มบันทึกเหตุการณ์ใน'ตัวแก้ไขรีจิสทรี' โดยให้ทำตามขั้นตอนต่อไปนี้::
  1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้.
  2. ในการOPENกล่องข้อความ ชนิดregedit.
  3. ค้นหาคีย์ย่อยของรีจิสทรีต่อไปนี้:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
  4. คลิกขวาโปรแกรมประยุกต์คีย์ย่อย ให้ชี้ไปที่ใหม่แล้ว คลิกคีย์:.
  5. ประเภท:Testชื่อคีย์
  6. ปิด Registry Editor

วิธีการที่สอง

กระบวนการEventLogInstallerคลาใน System.Diagnostics namespace ช่วยให้คุณติดตั้ง และกำหนดค่าแฟ้มบันทึกเหตุการณ์ที่อ่านจากโปรแกรมประยุกต์ของคุณ หรือเขียนไปยังขณะทำงาน คุณสามารถสร้างแหล่งของเหตุการณ์ที่ โดยใช้ EventLogInstaller โดยให้ทำตามขั้นตอนต่อไปนี้::
  1. ใช้ Microsoft Visual Basic .NET หรือ Microsoft Visual c# .NET เพื่อสร้างใหม่ไลบรารีคลาสชื่อ EventLogSourceInstaller โดยค่าเริ่มต้น การClass1.vbแฟ้มหรือClass1.csสร้างแฟ้ม
  2. คลิกขวาใน Explorer โซลูชันEventLogSourceInstallerแล้ว คลิกเพิ่มการอ้างอิง.
  3. ในการเพิ่มการอ้างอิงกล่องโต้ตอบ คลิกสองครั้งSystem.Configuration.Install.dllแล้ว คลิกตกลง.
  4. เปลี่ยนชื่อ Class1.vb\Class1.cs MyEventLogInstaller.vb\MyEventLogInstaller.cs
  5. แทนรหัสที่มีอยู่ใน MyEventLogInstaller.vb หรือ MyEventLogInstaller.cs ด้วยตัวอย่างรหัสต่อไปนี้:

    visual Basic ตัวอย่างของ.NET
    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 
    
    ตัว 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. ในการการสร้างเมนู คลิกสร้างโซลูชันการสร้างEventLogSourceInstaller.dll.
  7. เปิดพร้อมท์ใน Visual Studio .NET รับคำสั่ง
  8. หน้าจอพร้อมรับคำสั่ง เปลี่ยนไปเป็นโฟลเดอร์ที่EventLogSourceInstaller.dllคุณจะอยู่
  9. เรียกใช้คำสั่งต่อไปนี้เพื่อสร้าง EventSource:
    InstallUtil EventLogSourceInstaller.dll

ข้อมูลเพิ่มเติม

ขั้นตอนในการทำให้สถานการณ์เกิดขึ้นอีกครั้ง

  1. ใช้ Visual Basic .NET หรือ Visual .NET c# สร้างใหม่แอพลิเคชันเว็บ asp.net. โดยค่าเริ่มต้นWebForm1.aspxสร้างแฟ้ม
  2. ในมุมมอง HTML ของWebForm1.aspxการแทนรหัสที่มีอยู่ ด้วยตัวอย่างรหัสต่อไปนี้:

    Visual Basic .NET ตัวอย่าง
    <%@ 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 อย่าง
    <%@ 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. ในการตรวจแก้จุดบกพร่องเมนู คลิกเริ่มการทำงานเมื่อต้องการดูWebForm1.aspxหน้าในเบราว์เซอร์
  4. พิมพ์ข้อความในกล่องข้อความแล้ว คลิกเขียนลงในแฟ้มบันทึกเหตุการณ์.
  5. ข้อความแสดงข้อผิดพลาดที่มีการกล่าวถึงใน "อาการ" ส่วนของบทความนี้ปรากฏขึ้น
  6. เมื่อต้องการแก้ไขปัญหานี้ สร้างแหล่งข้อมูลมีเหตุการณ์ตามที่กล่าวถึงในส่วน "การแก้ปัญหา" และข้อคิดเห็นรหัสต่อไปนี้ในWebForm1.aspx:
    EventLog.CreateEventSource(ev.Source, "Application")
  7. ทำซ้ำขั้นตอนที่ 3 และ 4

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ Microsoft:
.aspx http://msdn2.microsoft.com/en-us/library/f5dcf6h3 (vs.71)
.aspx http://msdn2.microsoft.com/en-us/library/system.diagnostics.eventlog (vs.71)

คุณสมบัติ

หมายเลขบทความ (Article ID): 329291 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • 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 6.0
Keywords: 
kberrmsg kbwebforms kbsecurity kbprb kbmt KB329291 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:329291

ให้ข้อเสนอแนะ

 

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