`
lovnet
  • 浏览: 6969263 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Window 2008 R2 软件限制策略的默认调整,导致记录事件日志的权限不足

阅读更多

我电脑升级成 Window 2008 R2 后, 一个企业服务的项目出现如下错误:未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。

在这个企业服务中,当有错误发生时候,会把错误记录到Windows的事件日志中,这部分的代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace CSDN.Community.TopicListDataCenter
{
    /// <summary>
    /// </summary>记录到事件日志
    /// 
    public class MyLog
    {

        /// <summary>
        /// </summary>把异常写入日志
        /// 
        /// 
        /// 
        /// public static void Writer(string group, string name, Exception ex)
        {
            if (GACGlobals.IsNullorEmpty(group))
            {
                MyLog.Writer(ex);
                return;
            }


            StringBuilder text = new StringBuilder();
            if (!GACGlobals.IsNullorEmpty(name))
                text.AppendLine(name);
            text.AppendFormat("{0} : {1}", DateTime.Now.ToString("u"), Environment.NewLine);

            if (ex != null)
            {
                text.AppendFormat("\t   Type: {0}{1}", ex.GetType().Name, Environment.NewLine);
                text.AppendFormat("\tMessage: {0}{1}", ex.Message, Environment.NewLine);
                text.AppendFormat("\t Source: {0}{1}", ex.Source, Environment.NewLine);
                text.AppendFormat("\t  Stack: {0}{1}", ex.StackTrace, Environment.NewLine);

                while (ex.InnerException != null)
                {
                    text.AppendFormat("\t   Type: {0}{1}", ex.InnerException.GetType().Name, Environment.NewLine);
                    text.AppendFormat("\tMessage: {0}{1}", ex.InnerException.Message, Environment.NewLine);
                    text.AppendFormat("\t Source: {0}{1}", ex.InnerException.Source, Environment.NewLine);
                    text.AppendFormat("\t  Stack: {0}{1}", ex.InnerException.StackTrace, Environment.NewLine);
                    ex = ex.InnerException;
                }
            }

            text.AppendLine("***********************");

            // 写事件日志
            if (!EventLog.SourceExists(group))
            {
                EventLog.CreateEventSource(group, "Application");
            }

            EventLog logEntry = new EventLog();
            logEntry.Source = group;
            logEntry.WriteEntry(text.ToString(), EventLogEntryType.Error);
            logEntry.Close();
        }


        /// <summary>
        /// </summary>把异常写入时间日志
        /// 
        /// public static void Writer(Exception ex)
        {

            StringBuilder text = new StringBuilder();
            text.AppendFormat("{0} : {1}", DateTime.Now.ToString("u"), Environment.NewLine);

            if (ex != null)
            {
                text.AppendFormat("\t   Type: {0}{1}", ex.GetType().Name, Environment.NewLine);
                text.AppendFormat("\tMessage: {0}{1}", ex.Message, Environment.NewLine);
                text.AppendFormat("\t Source: {0}{1}", ex.Source, Environment.NewLine);
                text.AppendFormat("\t  Stack: {0}{1}", ex.StackTrace, Environment.NewLine);

                while (ex.InnerException != null)
                {
                    text.AppendFormat("\t   Type: {0}{1}", ex.InnerException.GetType().Name, Environment.NewLine);
                    text.AppendFormat("\tMessage: {0}{1}", ex.InnerException.Message, Environment.NewLine);
                    text.AppendFormat("\t Source: {0}{1}", ex.InnerException.Source, Environment.NewLine);
                    text.AppendFormat("\t  Stack: {0}{1}", ex.InnerException.StackTrace, Environment.NewLine);
                    ex = ex.InnerException;
                }
            }

            text.AppendLine("***********************");

            // 写事件日志
            if (!EventLog.SourceExists(".NET Runtime"))
            {
                EventLog.CreateEventSource(".NET Runtime", "Application");
            }

            EventLog logEntry = new EventLog();
            logEntry.Source = ".NET Runtime";
            logEntry.WriteEntry(text.ToString(), EventLogEntryType.Error);
            logEntry.Close();
        }

    }
}

显然,默认情况下,是因为无权执行 EventLog.CreateEventSource( 导致的问题,

而这个问题,以前在 Win2008, Win2003 上都是没有问题的。

以前我这里的设置如下图:

image

在Win2008 R2 中如果要解决这个问题,则需要 打开 应用软件限制策略,并把它设置成“不受限”即可。这样就有权限执行 EventLog.CreateEventSource( 这行代码了。如下图:

image

或者,手工在注册表中提前添加 EventLog.CreateEventSource( 用到的一些日志分类。
即:在注册表里预先建好日志项(运行regedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
右键单击新建-->项)

在上述设置选项中,除了不受限,不允许外,还有一个名为”基本用户”的策略,”基本用户”这条策略的含义是,除了通过其他规则明确指定的软件外,其他所有软件都只能以一般用户的身份运行(也就是说,不能以管理员的身份运行)。

参考资料:

C# 编写的Windows serice程序. 安装时出现异常
http://topic.csdn.net/u/20080129/16/479cedb2-d848-422a-a53a-5402e4384b20.html

COM+ 应用程序 属性页:“安全”选项卡
http://technet.microsoft.com/zh-cn/library/dd145616.aspx

活用软件限制策略
http://www.xieyidian.com/?p=266

分享到:
评论

相关推荐

    windows server 2008 r2 服务器专用的Ser-U 软件

    标题中的“Windows Server 2008 R2 服务器专用的Ser-U 软件”指的是在Windows Server 2008 R2操作系统环境下使用的Ser-U FTP(File Transfer Protocol)服务器软件。Ser-U是一款功能强大的FTP服务器解决方案,尤其...

    rabbitmq window2008安装和使用说明配置说明

    3. **配置安全策略**: 为了保护RabbitMQ,应配置适当的权限策略,限制用户只能访问他们需要的资源,并禁用不安全的默认设置。 **四、使用RabbitMQ** 1. **发布与消费消息**: RabbitMQ的基本操作包括发布消息到队列...

    第1篇:Window日志分析.pdf

    3. **安全日志**:安全日志是最关键的一类日志,它记录了系统的安全事件,比如用户的登录尝试、文件访问权限更改等。这对于安全审计来说至关重要,尤其是在检测潜在的安全威胁或调查安全事件时。 #### 二、审核策略...

    Windows Server 2012 R2 镜像SXS

    Windows Server 2012 R2默认并不包含.NET Framework 3.5,但用户可以手动通过“服务器管理器”或DISM(Deployment Image Servicing and Management)工具添加此功能。当尝试安装时,系统会尝试从Windows Update、...

    windows server 2012 r2 专业版,解决不能安装.net3.5问题

    在Windows Server 2012 R2专业版中,安装.NET Framework 3.5可能会遇到一些挑战,因为这个版本的Windows默认并未包含该组件。这个问题主要是由于.NET 3.5的安装需要依赖于Windows的“Side-by-Side”(SxS)组件,这些...

    Oracle创建表空间、临时表、用户及用户授权

    - `logging` 指定表空间是否记录重做日志信息。 - `datafile` 指定数据文件的路径和名称。 - `size` 初始化数据文件的大小。 - `autoextend` 允许数据文件自动扩展。 - `next` 设置每次扩展的大小。 - `...

    Windows2003R2架设域控服务器

    在选择AD数据库和日志的存储位置时,通常保持默认设置,除非C盘空间不足。SYSVOL文件夹的位置同样如此,除非有特殊需求,否则不建议更改。由于当前环境中没有配置DNS,安装向导会提示DNS注册诊断错误,此时选择"在这...

    winserver安装emqx报script.zip

    Windows Server 2012 R2 默认可能并未包含所有必要的版本,因此安装 EMQ X 时可能会提示缺失。 2. **解决步骤**: - 首先,你需要下载适用于你的系统的 Microsoft C++ 运行时库。通常,你需要的是对应版本的 x86 ...

    达梦7 windows 安装包

    3. 配置安全策略:设置用户权限,限制非法访问,启用审计功能以跟踪数据库操作。 4. 调整性能参数:根据系统负载和业务需求,优化数据库的缓存大小、并发连接数等参数。 **五、日常使用** 1. 连接与查询:使用DM7...

    Windows2003R2架设域控服务器.doc

    在权限选择上,推荐选择“只与Windows 2000或Window 2003操作系统兼容的权限”,以确保兼容性。随后,会要求设置一个还原密码,务必妥善保存,因为这在后续的活动目录恢复操作中至关重要。 在确认信息无误后,点击...

    mysql5.7及window下安装步骤

    1. **操作系统**: 支持Windows Server 2008 R2 SP1、Windows Server 2012、Windows Server 2012 R2、Windows 8.1以及Windows 10。 2. **硬件要求**: 至少需要1GB RAM(建议4GB或以上),硬盘空间至少300MB(建议1GB...

    nacos的windows版本(nacos-server-2.0.3).rar

    5. **权限控制**:支持角色和用户的权限管理,保障数据的安全性。 为了更好地利用Nacos,你需要了解如何配置Nacos的各项参数,如数据源、服务发现策略、健康检查间隔等。此外,学习如何编写和使用Nacos的API也是...

    mongodb的window系统的客户端与服务端

    这个文件是针对Windows x86_64架构的MongoDB版本,适用于Windows Server 2008 R2或更高版本。安装过程中,你可以选择自定义安装路径、配置数据存储目录(data directory)、日志文件路径(log path)等设置。 ### ...

    android环境搭配详解

    - **Android SDK 1.5**:软件开发工具包,包含了开发Android应用程序所需的工具和库。 #### 三、下载与安装 1. **JDK 1.6** - 下载地址:`http://java.sun.com/javase/downloads/index.jsp` - 安装路径:默认为...

    在Windows Server 2019上配置NAS的方法

    在Windows Server 2019上配置NAS涉及多个步骤和技术组件。NAS(Network Attached Storage)即网络附加存储,是一种专用文件存储设备,通过网络连接...在生产环境中,还需要考虑备份、监控、日志记录等高级功能的实现。

Global site tag (gtag.js) - Google Analytics