首页 > 其他分享 >Window 2008 R2 软件限制策略的默认调整,导致记录事件日志的权限不足

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

时间:2023-06-21 22:03:58浏览次数:60  
标签:R2 text NewLine Environment Window ex 2008 InnerException AppendFormat

我电脑升级成 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>
        /// <param name="group"></param>
        /// <param name="name"></param>
        /// <param name="ex"></param>
        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>
        /// <param name="ex"></param>
        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 上都是没有问题的。

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

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

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

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

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

 

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

 

参考资料:

C# 编写的Windows serice程序. 安装时出现异常

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

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

标签:R2,text,NewLine,Environment,Window,ex,2008,InnerException,AppendFormat
From: https://blog.51cto.com/u_15588078/6532097

相关文章

  • ubuntu 访问Windows的共享
    假定您的Windows共享网络连接已经正确设定好。网络主机的IP:192.168.0.1网络主机的使用者名称:myusername网络主机的登录密码:mypassword网络主机的登陆域为:mydomain分享中的目录名称:share1主机上要挂载的目录:/media/sharename要挂载网络共享目录时sudomkdir/medi......
  • R语言中的跨平台支持:如何在Windows、MacOS和Linux上使用R语言进行数据分析和可视化
    目录当今数据科学领域,R语言已经成为了数据分析和可视化的流行工具。R语言具有强大的功能和灵活性,使得它可以在各种不同的平台上运行,包括Windows、MacOS和Linux。因此,本文将介绍R语言中的跨平台支持,如何在Windows、MacOS和Linux上使用R语言进行数据分析和可视化。一、引言随着数......
  • CVPR23 Highlight | 多模态新任务、新数据集:NTU提出广义引用分割问题GRES
    前言 来自新加坡南洋理工大学的研究者们定义了一个名为广义引用分割(GeneralizedReferringExpressionSegmentation,GRES)的新任务,将经典的引用分割扩展到允许表达式指代任意数量的目标对象。同时,文章还构建了第一个大规模的GRES数据集gRefCOCO,其同时包含多目标、无目标和单目标表......
  • window
    window使用telnethttps://www.cnblogs.com/cxygg/p/16724661.htmlnetstat-ano|findstrPORT在任务管理器中查询PID对应的进程信息tasklist|findstrPID查看是哪个进程或者程序占用了端口taskkill/T/F/PIDPID/TTreekill:终止指定的进程/F指......
  • 无法通过windows功能控制面板自动安装或卸载windows server角色和功能
    打开PowerShell后,直接复制下面安装.NETFramework3.5的脚本命令,记住全部复制,然后直接全部粘贴(不要一行一行复制粘贴):Set-ItemProperty-Path'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'-NameUseWUServer-Value0Restart-Service-NamewuauservInstall......
  • 【pywifi】Windows下import pywifi库报错:ModuleNotFoundError: No module named ‘com
    1、解决方法pipinstallcomtypes 参考链接:(88条消息)Windows下importpywifi库报错:ModuleNotFoundError:Nomodulenamed‘comtypes‘原因排查_广东上大分的博客-CSDN博客......
  • Windows 2008服务器远程桌面授权的120天到期了,怎么激活?
    Windows2008以上服务器版本操作系统安装了远程桌面服务后,只能免费使用120天,这就会让很多用户头疼,多界面无法正常运行了多少会影响到业务。今天我和你们分享几个解决服务器多界面120天就到期的问题,希望可以帮助到你一、重复利用120天授权超时后,在“运行”输入 "regedit",进入注册......
  • windows维护日常整理
    在命令提示符窗口中使用以下命令可以查询80端口是否被打开: netstat-ano|findstr:80这个命令会列出所有正在使用80端口的网络连接。如果80端口被打开,你将会看到一些相关的信息,包括本地地址、外部地址和进程ID。如果80端口没有被打开,你将不会看到任何输出。注意:这个命令......
  • [万神网络科技]Windows12网页版开源HTML源码
    Windows12网页版开源HTML源码源码介绍Windows12网页版是一个开源项目,使用标准网络技术,例如Html、CSS和Javascript,希望让用户在网络上预先体验Windows12因为这只是概念版,所以内容可能与Windows12正式版本不一致。源码截图下载地址:vx公众号:万神的小屋......
  • Windows如何共享文件夹?
    本方法适用于同个局域网内的共享:1、设置共享文件夹1.1创建需要共享的文件夹,选中共享文件夹,右键打开“属性”窗口,点击“共享”栏目,点击“共享(S)...”按钮;1.2添加可访问该共享文件夹的用户;1.3设置用户的权限级别,点击“共享”按钮;1.4完成设置,点击“完成”;1.5设置网络......