Artikel ini berisi informasi tentang mengedit registri. Sebelum mengedit registri, penting untuk memahami cara memulihkan registri jika terjadi masalah. Untuk informasi tentang cara memulihkan registri, lihat topik Bantuan "Memulihkan Registri" di Regedit.exe, atau topik Bantuan "Memulihkan Kunci Registri" di Regedt32.exe.
Fenomena
Ketika Anda menggunakan ASP.NET untuk menulis "sumber peristiwa" baru ke log peristiwa, Anda mungkin mendapatkan pesan kesalahan berikut: System.Security.SecurityException: Akses registri yang diminta tidak diizinkan.
Alasan mengapa
proses ASP.NET sedang berjalan adalah Pengguna default adalah ASPNET (NetworkService di bawah IIS6.0), dan pengguna ini tidak memiliki izin untuk membuat "sumber acara".
Catatan tentangsolusinya
: (Microsoft tidak akan banyak bicara jika Anda ingin menakut-nakuti Anda, seperti mengedit registri akan menyebabkan sistem crash). Jika Anda perlu mengatasi masalah ini, Anda harus membuat "sumber peristiwa" oleh pengguna dengan hak administrator sebelum Anda menjalankan program Asp.net ini. Ada beberapa metode untuk membuat "sumber acara".
Metode pertama
menggunakan langkah-langkah berikut untuk membuat "Sumber Peristiwa" di bawah "Log Aplikasi" di editor registri
1. Klik "Mulai" dan kemudian "Jalankan".
2. Masukkan "regedit" di kotak "Buka".
3. Temukan subkunci berikut:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication
4. Klik kanan "Aplikasi", klik "Baru", lalu klik "Item"
5. Ganti nama item baru ini menjadi "Tes"
6. Tutup Penyunting Registri
Metode kedua
memiliki kelas EventLogInstaller di namespace System.Diagnostics. Ini membuat dan mengonfigurasi log peristiwa yang dibaca dan ditulis aplikasi Anda saat runtime. Melalui langkah-langkah berikut, kita dapat menggunakan kelas EventLogInstaller untuk membuat "sumber industri acara"
1. Gunakan VB.NET atau C# untuk membuat "perpustakaan kelas" yang disebut EventLogSourceInstaller.
2. Tambahkan referensi ke System.Configuration.Install.dll, di proyek.
3. Ganti nama Class.VbClass.cs yang dibuat secara otomatis menjadi MyEventLogInstaller.vbMyEventLogInstaller.cs.
4. Ganti konten di MyEventLogInstaller.vb atau MyEventLogInstaller.cs dengan kode berikut:
Contoh Visual Basic .NET
ImporSistem.Diagnostik
Impor Sistem.Konfigurasi.Instal
Impor System.ComponentModel
<RunInstaller(True)> _
MyEventLogInstaller Kelas Publik
Pemasang Warisan
MyEventLogInstaller Pribadi Sebagai EventLogInstaller
Sub Publik Baru()
' Buat sebuah instance dari 'EventLogInstaller'.
myEventLogInstaller = EventLogInstaller baru()
' Atur 'Sumber' log peristiwa..komputerDownloadFilesartikel27, yang akan dibuat.
myEventLogInstaller.Sumber = "UJI"
' Setel 'Log' tempat sumber dibuat.
myEventLogInstaller.Log = "Aplikasi"
' Tambahkan myEventLogInstaller ke 'InstallerCollection'.
Pemasang.Tambahkan(myEventLogInstaller)
Akhiri Sub
Contoh
Akhir Kelas
Visual C# .NET
menggunakan Sistem;
menggunakan Sistem.Diagnostik;
menggunakan Sistem.ComponentModel;
menggunakan Sistem.Konfigurasi.Instal;
namespace EventLogSourceInstaller
{
[JalankanInstaller(benar)]
kelas publik MyEventLogInstaller : Penginstal
{
EventLogInstaller pribadi myEventLogInstaller;
publik MyEventLogInstaller()
{
//Buat Instance EventLogInstaller
myEventLogInstaller = new EventLogInstaller();
// Tetapkan Sumber Log Peristiwa..computerDownloadFilesarticle27, yang akan dibuat.
myEventLogInstaller.Source = "TEST";
// Atur Log tempat sumber dibuat
myEventLogInstaller.Log = "Aplikasi";
// Tambahkan myEventLogInstaller ke Koleksi Pemasang.
Pemasang.Tambahkan(myEventLogInstaller);
}
}
}
5. Bangun proyek ini dan dapatkan EventLogSourceInstaller.dll.
6. Buka prompt perintah Visual Studio .NET dan masuk ke direktori tempat EventLogSourceInstaller.dll berada.
7. Jalankan perintah ini untuk membuat "sumber acara": InstallUtil EventLogSourceInstaller.dll
Informasi lebih rinci
Kami mereproduksi kesalahan di atas dan menyelesaikan masalah ini dengan membuat Aplikasi Web.
1. Gunakan VB.Net atau C# untuk membangun Aplikasi Web Asp.net.
2. Ganti kode di WebForm1.aspx dengan kode berikut:
Contoh Visual Basic .NET
<%@ Halaman Bahasa="vb" AutoEventWireup="benar" %>
<%@ Impor namespace="Sistem.Diagnostik" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisi//EN">
<HTML>
<bahasa skrip="VB" runat="server">
Sub WriteEvent_Click(Src Sebagai Objek..komputerDownloadFilesartikel27, dan Sebagai EventArgs)
Redupkan ev Sebagai EventLog Baru("Aplikasi")
'Nama Sumber Acara
ev.Source = "TEST"
EventLog.CreateEventSource(ev.Source..computerDownloadFilesarticle27, "Application")
Coba
ev.WriteEntry(KotakTeks1.Teks)
Tangkap b sebagai pengecualian
Response.write("WriteEntry " & b.pesan & "<br>")
Akhiri Coba
ev=Tidak ada
Akhiri Sub
</skrip>
<isi>
<form id="Form1" runat="server">
Pesan acara:
<asp:textbox id="TextBox1" runat="server" Lebar="233px"></asp:textbox>
<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Tulis ke log peristiwa"></asp:button>
</bentuk>
</badan>
</HTML>
Contoh Visual C# .NET
<%@ Halaman Bahasa="c#" AutoEventWireup="benar" %>
<%@ Impor namespace="Sistem.Diagnostik" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisi//EN">
<HTML>
<bahasa skrip="C#" runat="server">
void WriteEvent_Click(Object Src..computerDownloadFilesarticle27, EventArgs e)
{
EventLog ev = new EventLog("Aplikasi");
//Nama Sumber Acara
ev.Source = "TEST";
EventLog.CreateEventSource(ev.Source..computerDownloadFilesarticle27, "Aplikasi")
;
{
ev.WriteEntry(KotakTeks1.Teks);
}
tangkapan (Pengecualian b)
{
Response.Write("WriteEntry " + b.Pesan + "<br>");
}
ev = nol;
}
</skrip>
<isi>
<form id="Form1" runat="server">
Pesan acara:
<asp:textbox id="TextBox1" runat="server" Lebar="233px"></asp:textbox>
<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Tulis ke log peristiwa"></asp:button>
</bentuk>
</badan>
</HTML>
3. Tekan F5 untuk memulai proyek ini.
4. Masukkan beberapa karakter di TextBox dan klik Write to Event Log.
5. Pesan kesalahan yang disebutkan di bagian "Gejala" di atas muncul.
6. Untuk mengatasi masalah ini, beri komentar pada baris kode berikut di Webform1.aspx
EventLog.CreateEventSource(ev.Source..computerDownloadFilesarticle27, "Aplikasi")
; Mulai ulang proyek ini.
http://www.cnblogs.com/niit007/archive/2006/08/13/475510.html