В этой статье содержится информация о редактировании реестра. Прежде чем редактировать реестр, важно понять, как восстановить реестр в случае возникновения проблемы. Информацию о том, как восстановить реестр, см. в разделе справки «Восстановление реестра» в Regedit.exe или в разделе справки «Восстановление разделов реестра» в Regedt32.exe.
Феномен
При использовании ASP.NET для записи нового «источника событий» в журнал событий может появиться следующее сообщение об ошибке: System.Security.SecurityException: запрошенный доступ к реестру запрещен.
Причина, по которой
процесс ASP.NET
не разрешен.работает. Пользователь по умолчанию — ASPNET (NetworkService в IIS6.0), и у этого пользователя нет разрешения на создание «источника событий».
Примечание порешению
: (Microsoft не будет много говорить, если вы хотите вас напугать, например, редактирование реестра приведет к сбою системы). Если вам нужно решить эту проблему, вы должны создать «источник событий» пользователем с правами администратора, прежде чем запускать эту программу Asp.net. Существует несколько методов создания «источников событий».
Первый метод
использует следующие шаги для создания «Источника событий» в разделе «Журнал приложений» в редакторе реестра
1. Нажмите «Пуск», а затем «Выполнить».
2. Введите «regedit» в поле «Открыть».
3. Найдите следующий подраздел:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication
4. Щелкните правой кнопкой мыши «Приложение», нажмите «Создать», а затем нажмите «Элемент»
5. Переименуйте этот новый элемент в «Тест»
6. Закрыть редактор реестра
Второй метод
имеет класс EventLogInstaller в пространстве имен System.Diagnostics. Он создает и настраивает журналы событий, которые ваше приложение читает и записывает во время выполнения. Выполнив следующие шаги, мы можем использовать класс EventLogInstaller для создания «источника индустрии событий»
1. Используйте VB.NET или C# для создания «библиотеки классов» под названием EventLogSourceInstaller.
2. Добавьте ссылку на System.Configuration.Install.dll в проект.
3. Переименуйте автоматически созданный файл Class.VbClass.cs в MyEventLogInstaller.vbMyEventLogInstaller.cs.
4. Замените содержимое MyEventLogInstaller.vb или MyEventLogInstaller.cs следующим кодом:
Пример Visual Basic .NET
ImportsSystem.Diagnostics
Импортирует System.Configuration.Install.
Импортирует System.ComponentModel
<RunInstaller(True)> _
Открытый класс MyEventLogInstaller
Наследует установщик
Частный myEventLogInstaller Как EventLogInstaller
Public Sub New()
' Создайте экземпляр EventLogInstaller.
myEventLogInstaller = Новый EventLogInstaller()
' Установите «Источник» журнала событий..computerDownloadFilesarticle27, который будет создан.
myEventLogInstaller.Source = "ТЕСТ"
' Установите «Журнал», в котором создается источник.
myEventLogInstaller.Log = "Приложение"
' Добавьте myEventLogInstaller в «InstallerCollection».
Installers.Add(myEventLogInstaller)
Конец субтитра
конечного класса
Visual C# .NET
использование системы;
использование System.Diagnostics;
использование System.ComponentModel;
используя System.Configuration.Install;
пространство имен EventLogSourceInstaller
{
[Выполнить установщик(истина)]
общедоступный класс MyEventLogInstaller: установщик
{
частный EventLogInstaller myEventLogInstaller
общественный MyEventLogInstaller();
{
//Создаем экземпляр EventLogInstaller
myEventLogInstaller = new EventLogInstaller();
// Установите источник журнала событий..computerDownloadFilesarticle27, который будет создан.
myEventLogInstaller.Source = "TEST"
// Установите журнал, в котором создается источник
myEventLogInstaller.Log = "Приложение"
// Добавляем myEventLogInstaller в коллекцию установщиков.
Installers.Add(myEventLogInstaller);
}
}
}
5. Соберите этот проект и получите EventLogSourceInstaller.dll.
6. Откройте командную строку Visual Studio .NET и перейдите в каталог, где находится EventLogSourceInstaller.dll.
7. Запустите следующую команду, чтобы создать «источник событий»: InstallUtil EventLogSourceInstaller.dll
Более подробная информация
Мы воспроизводим описанную выше ошибку и решаем эту проблему, создав веб-приложение.
1. Используйте VB.Net или C# для создания веб-приложения Asp.net.
2. Замените код в 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>
<язык сценариев="VB" runat="сервер">
Sub WriteEvent_Click(Src As Object..computerDownloadFilesarticle27, e As EventArgs)
Dim ev As New EventLog («Приложение»)
'Имя источника события
ev.Source = "TEST"
EventLog.CreateEventSource(ev.Source..computerDownloadFilesarticle27, "Application")
Попробуйте
ev.WriteEntry(TextBox1.Text)
Поймать b как исключение
Response.write ("WriteEntry" & b.message & "<br>")
Конец попытки
ев=Ничего
Конец субтитра
</script>
<тело>
<form id="Form1" runat="server">
Сообщение о событии:
<asp:textbox id="TextBox1" runat="server" Width="233px"></asp:textbox>
<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Запись в журнал событий"></asp:button>
</форма>
</тело>
</HTML>
Пример Visual C# .NET
<%@ Page Language="c#" AutoEventWireup="true" %>
<%@ Import namespace="System.Diagnostics" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<язык сценариев="C#" runat="server">
void WriteEvent_Click(Object Src..computerDownloadFilesarticle27, EventArgs e)
{
EventLog ev = новый EventLog("Приложение");
//Имя источника события
ev.Source = "TEST";
EventLog.CreateEventSource(ev.Source..computerDownloadFilesarticle27, "Приложение")
;
{
ev.WriteEntry(TextBox1.Text);
}
улов (исключение б)
{
Response.Write("WriteEntry " + b.Message + "<br>");
}
ев = ноль;
}
</script>
<тело>
<form id="Form1" runat="server">
Сообщение о событии:
<asp:textbox id="TextBox1" runat="server" Width="233px"></asp:textbox>
<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Запись в журнал событий"></asp:button>
</форма>
</тело>
</HTML>
3. Нажмите F5, чтобы запустить этот проект.
4. Введите несколько символов в текстовое поле и нажмите «Записать в журнал событий».
5. Появится сообщение об ошибке, упомянутое выше в разделе «Проблема».
6. Чтобы решить эту проблему, прокомментируйте следующую строку кода в Webform1.aspx.
EventLog.CreateEventSource(ev.Source..computerDownloadFilesarticle27, "Приложение")
; Перезапустите этот проект.
http://www.cnblogs.com/niit007/archive/2006/08/13/475510.html