C语言写的屏蔽进程运行的程序

这个是帮别人写的。具体用途不详。

// 通过PSAPI函数枚举进程
#include "stdio.h"
#include "string.h"
#include "windows.h"
// 定义函数指针
typedef BOOL (__stdcall* funEnumPorcess)(DWORD *lpidProcess, // 进程ID
DWORD cb, // lpidProcess的大小
DWORD *cbNeeded); // 实际使用lpidProcess的字节数

typedef DWORD (__stdcall* funGetModuleFileNameEx)(HANDLE hProcess, // 待获得进程名称的进程句柄
HMODULE hModule, // 当前调用进程的句柄
LPTSTR lpFileName, // 记录返回的进程名称
DWORD nSize); // lpFileName大小

const DWORD MAXPROCESS = 500; // 假设当前系统最大有500个进程正在执行
int main (){
while(1){
killer();
};
} ;
int killer()
{
char FileName[] = "notepad.exe"; // 大小写任意
char NameBuff[MAX_PATH];
char *pFileName; // pFileName转化为大写后的字符串指针
char *pNameBuff; // NameBuff转化为大写后的字符串指针

BOOL bRes; // 返回结果
HINSTANCE hInstance; // 动态库句柄
HANDLE hHandle; // 进程句柄

int i, j; // 循环变量

int len;

funEnumPorcess EnumProcesses;
funGetModuleFileNameEx GetModuleFileNameEx;

DWORD *buffer, maxNum, factNum;

maxNum = MAXPROCESS;
factNum = MAXPROCESS;
buffer = (DWORD *)malloc(maxNum);

hInstance = LoadLibrary("psapi.dll"); // 装载psapi.dll
if (hInstance)
{
EnumProcesses = (funEnumPorcess)GetProcAddress(hInstance, "EnumProcesses");
if (EnumProcesses)
{
bRes = EnumProcesses(buffer, maxNum, &factNum); // 枚举进程,得到进程名称和实际进程总大小
if (bRes)
{
factNum /= sizeof(DWORD); // 计算实际进程个数
GetModuleFileNameEx = (funGetModuleFileNameEx)GetProcAddress(hInstance, "GetModuleFileNameExA");
if (GetModuleFileNameEx)
{
for (i=0; i<factNum; i++)
{
hHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, buffer[i]); // 获取进程句柄
if (hHandle)
{
bRes = GetModuleFileNameEx(hHandle, NULL, NameBuff, MAX_PATH); // 获取进程名称
if (bRes)
{
pFileName = strupr(FileName); // 字符串转化为大写
pNameBuff = strupr(NameBuff);
if (strstr(pNameBuff, pFileName) != NULL) // 名字查找
{
if (TerminateProcess(hHandle, 0));
{
printf("关闭 %s 成功\n", NameBuff);
break;
}
}
}
// 关闭句柄
CloseHandle(hHandle);
}
}
}
}
}
// 释放动态库
FreeLibrary(hInstance);
}
free(buffer);

return 0;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值