#define _CRT_SECURE_NO_WARNINGS
#include <string>
#include <windows.h>
#include <stdint.h>
#include <tlhelp32.h>
#include <iostream>
#include <vector>
#include <time.h>
#include <fstream>
//#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
using namespace std;
char* time_now() //返回当前日期时间
{
time_t rawtime;
struct tm *info;
char buffer[]; time(&rawtime); info = localtime(&rawtime); strftime(buffer, , "%Y-%m-%d %H:%M:%S", info);
return buffer;
} DWORD GetProcessIdFromName(string name) //根据进程名称获取进程pid并返回进程pid
{
HANDLE hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
if (hsnapshot == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot Error!\n");
return ;
}
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32); int flag = Process32First(hsnapshot, &pe); while (flag != )
{
if (strcmp(pe.szExeFile, name.c_str()) == )
{
return pe.th32ProcessID;
}
flag = Process32Next(hsnapshot, &pe);
}
CloseHandle(hsnapshot);
return ;
} int KillProcess(int id) //根据进程ID杀进程
{
HANDLE hProcess = NULL;
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, id); //打开目标进程
if (hProcess == NULL) {
//wprintf(L"\nOpen Process fAiled:%d\n", GetLastError());
return -;
}
else{
DWORD ret = TerminateProcess(hProcess, );
// printf("Kill OK!\n");
if (ret == ) {
// wprintf(L"%d", GetLastError()); }
}
//结束目标进程 return -;
} void write_file(const char* timenow, int p_id, const char* p_name)// 写配置文件
{ ofstream aa;
aa.open("c:/killconfig.log");
aa << "[" << timenow << "]" << "[" << p_id << "]" << "[" << p_name << "]" <<"已被结束!"<< endl;
aa.close();
}
void ReadConfig()// 读取配置文件
{ string ppp;
ifstream ff;
ff.open("/config.ini");
while (getline(ff,ppp))
{
int a = GetProcessIdFromName(ppp.c_str());
if (a == NULL)
{
//printf("未检测到要结束的进程!\n");
continue;
}
else
{
KillProcess(a);
char* now_time = time_now();
write_file(now_time, a, ppp.c_str());//写入配置文件
printf("[%s][%d][%s]已经被结束!\n",now_time, a, ppp.c_str()); //日志打印 }
}
ff.close();
} int main()
{ while (){ ReadConfig();
Sleep(); //循环检测
} return ;
}

主要功能:  读取配置文件结束指定进程 每秒循环一次,并在C盘成成killconfig.log记录日志

C++ 读取配置文件结束指定进程的更多相关文章

  1. windows xp/7命令提示符强制结束指定进程

    开始----“运行 ”输入cmd ,然后在命令提示符下输入tasklist,出现如下列表: Image Name                     PID Session Name        ...

  2. Delphi 如何让程序获取权限结束指定进程?

    比如说让程序结束进程中360sd.exe 获取权限,否则会拒绝访问, 要怎么写?   补充: 这段代码中……点击按钮后结束不了360进程! unit Unit1;interfaceusesWindow ...

  3. Python测试进阶——(5)Python程序监控指定进程的CPU和内存利用率

    用Python写了个简单的监控进程的脚本monitor190620.py,记录进程的CPU利用率和内存利用率到文件pid.csv中,分析进程运行数据用图表展示. 脚本的工作原理是这样的:脚本读取配置文 ...

  4. Core 读取配置文件

    新建控制台 static void Main(string[] args) { Console.WriteLine("Hello World!"); //获取应用程序的当前工作目录 ...

  5. Java读取配置文件的方式

    Java读取配置文件的方式-笔记 1       取当前启动文件夹下的配置文件   一般来讲启动java程序的时候.在启动的文件夹下会有配置文件 classLoader.getResource(&qu ...

  6. Spring Boot配置,读取配置文件

    Spring Boot配置,读取配置文件 一.配置Spring Boot 1.1 服务器配置 1.2 使用其他Web服务器 1.3 配置启动信息 1.4 配置浏览器显示ico 1.5 Yaml语法 1 ...

  7. 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...

  8. java 4种方式读取配置文件 + 修改配置文件

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 方式一采用ServletContext读取读取配置文件的realpath然后通过文件流读取出来 方式二采用ResourceB ...

  9. nova读取配置文件流程

          在我们安装nova的过程中,设置它的配置文件/etc/nova/nova.conf是必不可少的一步.配置好nova.conf文件,nova-compute.nova-network等服务才 ...

随机推荐

  1. 在CentOS安装CMake (CentOS7 64位适用)

    在CentOS安装CMake 转自:http://www.cnblogs.com/mophee/archive/2013/03/19/2969456.html 一.环境描述 1.系统:CentOS 6 ...

  2. postman接口测试使用

    在做测试之前,先要了解一下http相关的一些知识,这样做起来才会更加顺手. http的请求分为header 和 body,一般在header里面放一些其他的信息,比如cookie,浏览器信息 body ...

  3. 如何使用Outlook 客户端配置其他邮箱客户端收发邮件

    本文介绍Outlook2016客户端配置QQ邮箱收发邮件 1.打开Outlook客户端,文件->信息->-添加账户 2.输入需要添加的邮箱账户,点击连接 3.输入密码并连接 4.打开QQ邮 ...

  4. Doc: NetBeans

    NetBeans的最新版本已经更新为Apache NetBeans. 安装JDK 在Mac OS X下,有".dmg"的安装包,可以直接安装.只要JDK的版本大于1.8.0就可以安 ...

  5. flink分层 api

    最底层的processFunction 功能强大,使用复杂 中间层的DataSet api map reduce ...一些基本运算api 中上层的tableAPI 最上层 SQL 两个相似,只是写法 ...

  6. Oracle之函数中使用游标

    create or replace function getcustprodinstaddr(in_CustId in number,in_area_code in number) return va ...

  7. <JZOJ4726>种花

    挺有意思的贪心 神奇的贪心 #include<cstdio> #include<iostream> #include<cstring> #include<al ...

  8. 吴裕雄--天生自然python学习笔记:beautifulsoup库的使用

    Beautiful Soup 库简介 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简 ...

  9. 吴裕雄--天生自然 R语言开发学习:高级编程

    运行的条件是一元逻辑向量(TRUE或FALSE)并且不能有缺失(NA).else部分是可选的.如果 仅有一个语句,花括号也是可以省略的. 下面的代码片段是一个例子: plot(x, y) } else ...

  10. Web窗体--控件

    服务器基本控件:button: text属性linkbutton:text属性,它是一个超链接模样的普通buttonhyperlink: navigateurl:链接地址,相当于<a>标签 ...