Sub WriteToEventLog(ByVal LogName As String, ByVal Message As String)        If (Not EventLog.SourceExists(LogName)) Then             EventLog.CreateEventSource(LogName, LogName)         End If         Dim log As New EventLog()         log.Source = LogName         log.WriteEntry(Message, EventLogEntryType.Error)End Sub希望可以幫到你

解决方案 »

  1.   

    private void LogEvent(string message)
    {
    if (!EventLog.SourceExists("YnaBooking"))
    {
    EventLog.CreateEventSource("YnaBooking", "Application");
    }
    EventLog.WriteEntry("YnaBooking", message, EventLogEntryType.Error);
    }但需要写入日志的权限~
    可以通过修改Machine.Config 的 <processModel> 把userName 属性改为SYSTEM
      

  2.   

    下面的肯定能解决你的问题,不过是抄袭百变金刚的帖子 :)根据我的经验,导致该问题的原因在于ASP.NET工作进程的Identity (默认情况下是ASPNET)没有修改注册表的权限。当您使用CreateEventSource函数时,会进行写注册表操作。建议您参阅下面的方法解决该问题:如果您使用Windows XP:1. Click "Start->Run".2. Enter "RegEdit"3. 右键点击:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog,选择Permissions. 给 "ASPNET" 赋予合适的权限。(如果您在ASP.NET中impersonate到其他的用户, 请合适的替换ASPNET)4. 右键点击HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security,选择Permissions. 给 "ASPNET" 赋予至少Read的权限。(如果您在ASP.NET中impersonate到其他的用户, 请合适的替换ASPNET)如果是Windows 2000:1。 Click "Start->Run".2. Enter "regedt32"3. Click "Security->Permission" on the menu bar.4. 给 "ASPNET" 赋予在下面键值上合适的权限。(如果您在ASP.NET中impersonate到其他的用户, 请合适的替换ASPNET)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog