C#获取系统服务+进程+启动时间
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38208401/article/details/77592653
1、起因
起因:我们wpf程序进程wisptis.exe(在系统和输入设备之间通信)先于系统服务TabletInputService(加载支持触控手写功能)启动,导致系统文件列表无法滑动
方案:开机启动后,收集系统服务和进程和各自的启动时间
2、服务
1)services.msc查看服务,并无启动时间,找了很久,发现windows系统日志存在服务的启动时间记录(清空日志,重启计算机即可)
2)开始代码获取服务+启动时间:(需要引用系统程序集:System.ServiceProcess)
string[] logTypes = new string[] { "System" };//"Application"应用程序, "Security"安全, "System"系统
foreach (string t in logTypes)
{
EventLog eSystem = new EventLog();
eSystem.Log = t;
string systeminfo = "";
foreach (EventLogEntry log in eSystem.Entries)
{
if (log.Message.Contains("服务处于 正在运行 状态") && log.ReplacementStrings.Any())//由于获取的并不全是服务,所以加个包含的判断
{
systeminfo = systeminfo + "\r\n" + log.ReplacementStrings.First() + "-----" + log.TimeGenerated + "\r\n";//Message其实是ReplacementStrings两个值拼接的,这里我只要服务所以只取了第一个
}
txt_systeminfo.Text = systeminfo;
}
}
执行效果:
3、进程
1)msinfo32查看进程
2)获取进程和启动时间
Process[] myProcesses;
myProcesses = Process.GetProcesses();
string processinfo = "";
foreach (Process p in myProcesses)
{
processinfo = processinfo + "\r\n" + p.ProcessName + "-----" + p.StartTime + "\r\n";
}
txt_processinfo.Text = processinfo;
直接获取进程的开始时间,一直Win32Exception异常拒绝访问
原因是权限不够,找了段也没太明白的代码解决了此问题(需要引用系统程序集:System.Management)
private DateTime GetProcessStartTimeById(int processId)
{
String queryString = "select CreationDate from Win32_Process where ProcessId='" + processId + "'";
SelectQuery query = new SelectQuery(queryString);
ManagementScope scope = new ManagementScope(@"\\.\root\CIMV2");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection processes = searcher.Get();
DateTime startTime = DateTime.Now;
foreach (var process in processes)
{
startTime = ManagementDateTimeConverter.ToDateTime(process["CreationDate"].ToString());
break;
}
return startTime;
}
将p.StartTime替换成GetProcessStartTimeById(p.Id)即可,执行效果:
C#获取系统服务+进程+启动时间的更多相关文章
- 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用
老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionP ...
- C# Process获取当前进程信息
1.获取当前进程信息整理 Process.GetCurrentProcess(),返回当前程序的进程对象. Process cur = Process.GetCurrentProcess(); //当 ...
- windows下使用C#获取特定进程网络流量
最近老板接了一个中船重工的项目,需要做一个有关海军软件系统的组件评估项目,项目中有一个子项目需要获取特定进程的各种系统参数,项目使用.NET平台.在获取特定进程各种系统参数时,其它诸如进程ID,进程名 ...
- 获取其他进程中ListBox和ComboBox的内容
(*// 标题:获取其他进程中ListBox和ComboBox的内容 说明:Window2000+Delphi6调试通过 设计:Zswang 支持:wjhu111@21cn.com 日期:2004-0 ...
- VB VS2003获取当前进程用户登录
Page.User.Identity.Name获取当前进程用户名称,VS03才可以用
- Windows获取其他进程中Edit控件的内容
最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下. 刚开始拿到这个问题,很自然的就想到GetDlgItemText() ...
- Delphi获取其它进程窗口句柄的3种方法
本文主要跟大家介绍Delphi中获取其它进程的窗口句柄,在Delphi中获取其它进程的窗口句柄,绝大部分人首先想到的会使用:FindWindow或者用GetWindow来遍历查找,如: handle ...
- 获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄
有时候在c++调用wpf控件的时候,wpf控件想自己显示窗体,但需要设置owner属性.迂回解决办法是设置wpf的window窗体的父窗体为进程的句柄. 1.获取当前进程id int id = Pro ...
- 扫描系统进程和获取某进程的PID
扫描系统的所有进程 #include <stdio.h> #include <windows.h> #include <tlhelp32.h> int scan() ...
随机推荐
- Django Model里的__str__以及Meta
举个栗子,注释已经比较详细了 name = models.CharField(max_length=30,verbose_name='标签名称') #max_length=30里的30在mysql以前 ...
- SpringMVC_HandlerMethodArgumentResolver 实践
HandlerMethodArgumentResolver 是什么? 就是用于解析参数的一个接口,springMVC(4.1)会直接调用这个接口的方法,对参数进行一定的解析.比如会在 Invocab ...
- c# Winform实现发送邮件
邮件发送类 来源网上 稍作调整...出处忘了 /** * 命名空间: EmailSend * 类 名: EmailSend * * 作者 变更内容 变更日期 * ─ ...
- 安装FTP
yum install vsftpd -y cd /etc/vsftpd/ touch login.txt vim login.txt db_load -T -t hash -f /etc/vsftp ...
- Spring项目下js文件无法引用
问题:最近练习spring-mvc框架的时候,引用了jQuery,但是运行的时候,jQuery做的事情都没有响应,代码也没有任何报错,在网上找了一下,发现是由于spring配制的是/,所有的资源都被屏 ...
- Java中super关键字的位置
1.子类的构造函数如果要引用super的话,必须把super放在函数的首行. 例如: class Base { Base() { System.out.println("Base&qu ...
- Redis Desktop Manager连接Redis 遇到的一系列问题
最近在做一个土地项目的后台,主要是一个信息采集调查系统,使用的框架是: * 核心框架:Spring Framework 4.2 * 日志管理:SLF4J 1.7.Log4j 1.2 * 视图框架:Sp ...
- Spring Boot中普通类获取Spring容器中的Bean
我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,自己动手n ...
- Android Studio在Ubuntu下离线安装Gradle
更新android studio3.0后又要升级gradle了,估计又要很长时间,晚上临走前跟开始更新下载,第二天一早发现又卡了,吐血. 在某CSDN下载gradle-4.1-all.zip,直接手动 ...
- Windows——关于Word2016/2019提示需要修复问题处理
一.问题描述 打开Word提示 很抱歉此功能看似已中断,并需要修复.请使用Windows控制面板中的“程序和功能”选项修复Microsoft Office. 二.解决方法 运行 regedit 进入注 ...