#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. svn使用2(转)

    首先打开VisualSVN Server Manager,如图: 可以在窗口的右边看到版本库的一些信息,比如状态,日志,用户认证,版本库等.要建立版本库,需要右键单击左边窗口的Repositores, ...

  2. [LC] 81. Search in Rotated Sorted Array II

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  3. 16)用了session会话技术

    为什么用session会话技术? 因为假如你进入后台,不可能随意进入,即使你的验证通过了,那么还需要一个变量来存一个标志,假如标志的值是yes,那么我们可以直接进入后台的首页,无需验证,但是,标志是n ...

  4. python中sorted和sorted 、reversed和reverse的使用。

    #encoding = utf-8 list = [1,8,3,6] print(list.sort()) #None print(list) #[1,3,6,8] print(sorted(list ...

  5. js编写trim()函数

    1.js中本身是没有trim函数的,不过你可以自己写一个 function trim(str) {     var newStr = str.replace(/^\s*$/g,'')     retr ...

  6. python 通过socket实现ssh功能

    功能:实现从客户端向服务端发送cmd指令,服务端将结果返回给客户端的功能. #coding:utf-8 '''服务端''' import socket,os server=socket.socket( ...

  7. Soldier and Badges

    题目链接:https://vjudge.net/problem/CodeForces-546B AC代码: #include<iostream> #include<algorithm ...

  8. java对象POJO和JavaBean的区别

    "Plain Ordinary Java Object",简单普通的java对象.主要用来指代那些没有遵循特定的java对象模型,约定或者框架的对象.POJO的内在含义是指那些:有 ...

  9. 瑞士一苹果店内iPhone突然爆炸致7人入院,iPhone还值得买吗?

    与国产手机高歌猛进态势呈现"最萌发展差"的,是以三星.苹果为代表的海外手机厂商在过去一年的疲态.数据显示,2017年小米手机产量较2016年增长幅度达76%,OPPO和vivo则分 ...

  10. 用手机应用追踪城市噪声污染——微软Azure助力解决城市问题

    噪声无孔不入的城市地带(图片来自于网络) 2014年4月19日发行的<经济学人>杂志预言,到2030年,中国人口的70%(约10亿人)会在城市中居住.中国城镇化的高速发展一方面大大提高了 ...