先不说如何实现,先来看看效果图:

读取远程的需要提供下远程的计算用户名和密码即可。

如何实现这个代码功能,请看如下代码部分:

实体类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace GetDNSListTool
{public class EventLogEntity{string strEventType = string.Empty;  /// <summary>/// 日志类型/// </summary>public string EventType{get { return strEventType; }set { strEventType = value; }}string strTimeWritten = string.Empty;  /// <summary>/// 日志日期/// </summary>public string TimeWritten{get { return strTimeWritten; }set { strTimeWritten = value; }}string strCategory = string.Empty;  /// <summary>/// 日志种类/// </summary>public string Category{get { return strCategory; }set { strCategory = value; }}string strSourceName = string.Empty;  /// <summary>/// 日志来源/// </summary>public string SourceName{get { return strSourceName; }set { strSourceName = value; }}/// <summary>/// Eevnet ID/// </summary>string strEventIdentifier = string.Empty;  public string EventIdentifier{get { return strEventIdentifier; }set { strEventIdentifier = value; }}string strRecordNumber = string.Empty;  /// <summary>/// 行号/// </summary>public string RecordNumber{get { return strRecordNumber; }set { strRecordNumber = value; }}string strEventCode = string.Empty;  /// <summary>/// 日志编码/// </summary>public string EventCode{get { return strEventCode; }set { strEventCode = value; }}string strCategoryString = string.Empty;/// <summary>/// CategoryString/// </summary>public string CategoryString{get { return strCategoryString; }set { strCategoryString = value; }}string strMessage = string.Empty;/// <summary>/// 详细错误/// </summary>public string Message{get { return strMessage; }set { strMessage = value; }}}
}

#region//格式化信息类别/// <summary>/// 格式化信息类别/// </summary>/// <param name="val"></param>/// <returns></returns>private string GetEventTypeString(NTLogEvent.EventTypeValues val){switch (val){case NTLogEvent.EventTypeValues.Error:return EventTypeDescription.Error;case NTLogEvent.EventTypeValues.Warning:return EventTypeDescription.Warning;case NTLogEvent.EventTypeValues.Information:return EventTypeDescription.Information;case NTLogEvent.EventTypeValues.Security_audit_success:return EventTypeDescription.SuccessAudit;case NTLogEvent.EventTypeValues.Security_audit_failure:return EventTypeDescription.FailureAudit;default:return EventTypeDescription.Unknown;}}#endregion

#region//获取日志文件/// <summary>/// 获取日志文件/// </summary>/// <param name="topNumber">多少条</param>/// <param name="eventCode">事件ID</param>/// <param name="startTime">开始时间</param>/// <param name="endTime">结束时间</param>/// <returns>返回集合</returns>public List<EventLogEntity> GetEventLogList(int topNumber, string eventCode, string startTime, string endTime){List<EventLogEntity> logList = new List<EventLogEntity>();try{//条件语句StringBuilder query = new StringBuilder();StringBuilder strWhere = new StringBuilder();query.Append("select EventType, TimeWritten, Category, SourceName, EventIdentifier, RecordNumber,CategoryString,EventCode,Message  from Win32_NTLogEvent ");//日志IDif (!string.IsNullOrEmpty(eventCode)){strWhere.Append(" AND eventCode = '");strWhere.Append(eventCode);strWhere.Append("'");}//开始日期if (!string.IsNullOrEmpty(startTime)){strWhere.Append(" AND TimeWritten>= '");strWhere.Append(getDmtfFromDateTime(startTime));strWhere.Append("'");}//结束日期if (!string.IsNullOrEmpty(endTime)){strWhere.Append(" AND TimeWritten<= '");strWhere.Append(getDmtfFromDateTime(endTime));strWhere.Append("'");}string laststrWhere = strWhere.ToString();//如果有检索条件if (!string.IsNullOrEmpty(laststrWhere)){laststrWhere = " where " + laststrWhere.Substring(4);}//组合条件
               query.Append(laststrWhere);//值ManagementObjectCollection moCollection = null;//如果是本地if (isLocal){ManagementScope scope = new ManagementScope(scopePath);scope.Connect();ObjectQuery objectQuery = new ObjectQuery(query.ToString());//WQL语句,设定的WMI查询内容和WMI的操作范围,检索WMI对象集合ManagementObjectSearcher Searcher = new ManagementObjectSearcher(scope, objectQuery);//异步调用WMI查询moCollection = Searcher.Get();}//表示远程else{//设定通过WMI要查询的内容ObjectQuery Query = new ObjectQuery(query.ToString());//WQL语句,设定的WMI查询内容和WMI的操作范围,检索WMI对象集合ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Ms, Query);//异步调用WMI查询moCollection = Searcher.Get();}//循环if (moCollection != null){//计数器int i = 0;//foreachforeach (ManagementObject mObject in moCollection){//如果i==topNumber就退出循环if (i == topNumber){break;}EventLogEntity eventLog = new EventLogEntity();//日志类型eventLog.EventType = mObject["EventType"] == null ? string.Empty :GetEventTypeString(((NTLogEvent.EventTypeValues)(System.Convert.ToInt32(mObject["EventType"]))));//日志种类eventLog.Category = mObject["Category"] == null ? string.Empty :mObject["Category"].ToString();//日志种类eventLog.CategoryString = mObject["CategoryString"] == null ? string.Empty :mObject["CategoryString"].ToString();//日志编码eventLog.EventCode = mObject["EventCode"] == null ? string.Empty :mObject["EventCode"].ToString();//日志IDeventLog.EventIdentifier = mObject["EventIdentifier"] == null ? string.Empty :mObject["EventIdentifier"].ToString();//行号eventLog.RecordNumber = mObject["RecordNumber"] == null ? string.Empty :mObject["RecordNumber"].ToString();//日期eventLog.TimeWritten = mObject["TimeWritten"] == null ? string.Empty :getDateTimeFromDmtfDate(mObject["TimeWritten"].ToString());//日志来源eventLog.SourceName = mObject["SourceName"] == null ? string.Empty :mObject["SourceName"].ToString();//详细错误eventLog.Message = mObject["Message"] == null ? string.Empty :mObject["Message"].ToString();//add
                       logList.Add(eventLog);////
                       i++;}}}catch (Exception ex){throw ex;}//
           return logList;}#endregion#region//根据行号检索错误信息/// <summary>/// 根据行号检索错误信息/// </summary>/// <param name="recordNumber">行号</param>/// <returns>返回错误信息</returns>public string GetErrMsg(uint recordNumber){string Msg = string.Empty;try{//条件语句StringBuilder query = new StringBuilder();query.Append("select Message, InsertionStrings from Win32_NTLogEvent where ");query.Append(" RecordNumber='");query.Append(recordNumber);query.Append("'");//值ManagementObjectCollection moCollection = null;//如果是本地if (isLocal){ManagementScope scope = new ManagementScope(scopePath);scope.Connect();ObjectQuery objectQuery = new ObjectQuery(query.ToString());//WQL语句,设定的WMI查询内容和WMI的操作范围,检索WMI对象集合ManagementObjectSearcher Searcher = new ManagementObjectSearcher(scope, objectQuery);//异步调用WMI查询moCollection = Searcher.Get();}//表示远程else{//设定通过WMI要查询的内容ObjectQuery Query = new ObjectQuery(query.ToString());//WQL语句,设定的WMI查询内容和WMI的操作范围,检索WMI对象集合ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Ms, Query);//异步调用WMI查询moCollection = Searcher.Get();}//检索错误信息foreach (ManagementObject mObject in moCollection){//错误信息string message = mObject["Message"] == null ?string.Empty : mObject["Message"].ToString();//错误信息string[] insertionStrings =mObject["InsertionStrings"]==null?null:(string[])mObject["InsertionStrings"];//如果有错误信息if (string.IsNullOrEmpty(message)){if (insertionStrings.Length > 0){StringBuilder sb = new StringBuilder();for (int i = 0; i < insertionStrings.Length; i++){sb.Append(insertionStrings[i]);sb.Append(" ");}Msg =  sb.ToString();}}else{Msg= message;}}}catch{}//returnreturn string.IsNullOrEmpty(Msg) ? "无错误信息,请与管理员联系核对!" : Msg;}#endregion

C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统日志查看功能...相关推荐

  1. C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统摘要信息查看功能...

    最近做一个项目碰到要实现查看本地和远程计算机的摘要信息,采用命令行msinfo32可以很快查看到,如下图: 需要在用C#来实现类似信息查看.尤其远程计算机的..因此通过MSDN查询到.win32的AP ...

  2. C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统摘要信息查看功能

    最近做一个项目碰到要实现查看本地和远程计算机的摘要信息,采用命令行msinfo32可以很快查看到,如下图: 需要在用C#来实现类似信息查看.尤其远程计算机的..因此通过MSDN查询到.win32的AP ...

  3. java获取 msinfo32 api_C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统日志查看功能...

    #region//获取日志文件 /// ///获取日志文件/// /// 多少条 /// 事件ID /// 开始时间 /// 结束时间 /// 返回集合 public List GetEventLog ...

  4. 用Debug函数实现API函数的跟踪

    用Debug函数实现API函数的跟踪 如果我们能自己编写一个类似调试器的功能,这个调试器需要实现我们对于跟踪监视工具的要求,即自动记录输入输出参数,自动让目标进程继续运行.下面我们就来介绍在不知道函数 ...

  5. 动态获取API函数地址---对抗win7 aslr安全机制

    本人近期在研究缓冲区溢出,在学习中发现,win7下系统关键函数的地址随机化了(每次重启后地址有变),为了解决地址定位问题,在偌大的互联网上找了好久,贴来分享下,以作备用. -------------- ...

  6. 剑走偏锋--使用WMI获取远程计算机进程程序集中查毒病毒打造内网安全环境

    剑走偏锋-使用WMI获取远程计算机进程程序 集中查毒病毒打造内网安全环境 作者:高玉涵 时间:2019.04.1815:45 博客:blog.csdn.net/cg_i 作者背景环境参见: <由 ...

  7. //5. 有若干本图书,图书信息包括图书书名、作者、出版社和价格。要求输出图书价格(const成员函数), //显示图书书名、作者、出版社(非const成员函数)、根据图书书名查找图书并显示相关信息等

    //5. 有若干本图书,图书信息包括图书书名.作者.出版社和价格.要求输出图书价格(const成员函数), //显示图书书名.作者.出版社(非const成员函数).根据图书书名查找图书并显示相关信息等 ...

  8. C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)

    前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧... 当然第一想法肯定是利用Windo ...

  9. C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息

     转自:http://blog.csdn.net/ly402609921/article/details/7446943 前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利 ...

最新文章

  1. 微信小程序showModel使用注意
  2. ubuntu的学习教程(常用操作)
  3. Effective C++ 条款05
  4. Android注解使用之ButterKnife 8.0注解使用介绍
  5. 初一模拟赛总结(3.16)
  6. 启动时不自动打开一个空文档
  7. 梯度下降算法(GD)—收敛速率证明
  8. php网站 小偷源代码
  9. 威纶通触摸屏与西门子PLC200之间的无线通讯
  10. 网盘源码php,PHP云盘网盘系统(PHP云盘源码工具)V1.1 免费版
  11. vue echarts柱状统计图,多组数据对比
  12. Android Protobuf应用及原理
  13. 了解一些常用的文件系统和一些基础定义
  14. Masked Autoencoders Are Scalable Vision Learners 论文研读
  15. 软件设计师教程(十三)计算机系统知识-软件系统分析与设计
  16. 【ORB-SLAM】原理部分
  17. 蓝桥杯训练总结(收官)
  18. 第十四周 项目2 根据成绩排序或姓名排序输出姓名或成绩问题
  19. java8 四大函数式接口 和 用于数据处理的 stream流 使用详解
  20. jenkin swindows启动_Windows环境下实现Jenkins自动化部署

热门文章

  1. 手握智算中心“绿洲”,毫末跑在中美自动驾驶长跑第一线
  2. 利用select into直接创建临时表
  3. vm linux 文件夹,根目录vmlinux的编译过程
  4. element table 暂无数据
  5. 2020 全球顶尖计算机科学家排名发布:两位华人学者入全球前 10,Top 1000 华人学者过百...
  6. SpringBoot整合任务系统(quartz和SpringTask)
  7. C++字符串转换整数 (atoi)
  8. 数据库ACID的含义
  9. python 爬虫(表情包)
  10. Amdroid ExpandableListView(可折叠列表)的基本使用