#include <cstdio>
#include <cstring>
#include <windows.h>
#include <tlhelp32.h> using namespace std; const int MAX = ; WCHAR SysProcList[MAX][MAX_PATH] = {
L"[system process]",
L"system",
L"smss.exe",
L"csrss.exe",
L"wininit.exe",
L"winlogon.exe",
L"services.exe",
L"lsass.exe",
L"lsm.exe",
L"svchost.exe",
L"audiodg.exe",
L"explorer.exe",
L"conhost.exe",
L"dllhost.exe",
L"ctfmon.exe"
}; bool CheckSysProcList(LPWSTR lpText);
void PrintfNormal(LPWSTR lpText);
void PrintfSucceed(LPWSTR lpText);
void PrintfError(LPWSTR lpText); int main()
{
HANDLE hToken;
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken); LUID luid = {};
LookupPrivilegeValue(NULL, L"SeDebugPrivilege", &luid); TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = ;
tp.Privileges[].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[].Luid = luid;
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL))
{
PrintfError(L"ERROR_01!\n");
Sleep();
return ;
} HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (INVALID_HANDLE_VALUE == hSnapshot)
{
PrintfError(L"ERROR_02!\n");
Sleep();
return ;
} PROCESSENTRY32 pe32 = {};
pe32.dwSize = sizeof(pe32); BOOL ret = Process32First(hSnapshot, &pe32);
while (ret)
{
Sleep(); bool isSysProc = (pe32.th32ProcessID == GetCurrentProcessId()) || (CheckSysProcList(wcslwr(pe32.szExeFile))); WCHAR wstr[MAX_PATH];
wsprintf(wstr, L"%d %s %s", pe32.th32ProcessID, wcslwr(pe32.szExeFile), isSysProc ? L"ignored\n" : L"");
PrintfNormal(wstr); if (!isSysProc)
{
BOOL tpret = TerminateProcess(OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID), NULL);
wsprintf(wstr, L"shutdown %s\n", tpret ? L"succeed" : L"faild"); if (tpret)
PrintfSucceed(wstr);
else
PrintfError(wstr);
} ret = Process32Next(hSnapshot, &pe32);
} PrintfNormal(L"\nProcess Clean Finish...\n");
Sleep();
return ;
} bool CheckSysProcList(LPWSTR lpText)
{
for (int i = ; i < MAX; i++)
if ( == wcscmp(lpText, SysProcList[i]))
return true; return false;
} void PrintfNormal(LPWSTR lpText)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("%S", lpText);
} void PrintfSucceed(LPWSTR lpText)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("%S", lpText);
} void PrintfError(LPWSTR lpText)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("%S", lpText);
}

Unicode与MultiByte之间的练习: Process Cleaner的更多相关文章

  1. ASCII、ANSI、GB2312、Unicode、UTF-8之间的关系

    1.ASCII码: ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于 ...

  2. 字符编码:Unicode和UTF-8之间的关系

    Unicode和UTF-8之间的关系 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256 ...

  3. 举例说明Unicode 和UTF-8之间的转换

    1)写这篇博客的原因 首先我要感谢这篇博客,卡了很久,看完下面这篇博客终于明白Unicode怎么转换成UTF-8了. https://blog.csdn.net/qq_32252957/article ...

  4. Unicode和UTF-8之间的关系

    作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...

  5. Unicode和UTF-8之间的转换

    转自:http://www.cnblogs.com/xdotnet/archive/2007/11/23/unicode_and_utf8.html#undefined 最近在用VC++开发一个小工具 ...

  6. SSIS无法在unicode和非unicode 字符串数据类型之间转换

    场景:SSIS从oracle抽到sqlserver,一个表对表到数据仓库ODS层的抽取,没有任何逻辑结果遇到问题: SSIS无法在unicode和非unicode 字符串数据类型之间转换 如下图2个字 ...

  7. unicode和utf8之间的关系

    ,字符编码是计算机技术的基石,想要熟练使用计算机,懂得一点字符编码的知识,还是很有必要的. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit ...

  8. python中unicode, hex, bin之间的转换

    python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个d ...

  9. SSIS 无法在 unicode 和非 unicode 字符串数据类型之间转换

    最近在学SSIS,遇到一个问题,把平面文件源的数据导入到EXCEL中. 平面文件源的对象是CSV,读进来的PhoneNumber是 DT_STR 然后倒入Excel 对应列建立的是longtext 一 ...

随机推荐

  1. Java——面向对象知识总结

    面向对象的三条主线: 一.类及类的成分 1.类与类的关系: java程序是关注于类的设计. 类从代码的角度:并列关系! 从执行.设计的角度:关联关系.继承关系.聚合关系 class A{ } clas ...

  2. sql 数据库

    在关系数据库中,最常用的操作就是查询.直线电机推杆 准备数据 为了便于讲解和练习,我们先准备好了一个students表和一个classes表,它们的结构和数据如下: students表存储了学生信息: ...

  3. Shiro学习(1)简介

    1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比spring Security,可能没有Spring Securi ...

  4. 把sublime添加到右键快捷菜单

    方法一: 新建sublime_addright.reg文件 编辑后双击打开就OK 括号内是sublime安装路径:使用的时候去掉括号 open sublimeText3 是提示文字 Windows R ...

  5. Ext 可编辑的GridPanel

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. [NOIP模拟测试12]题解

    A. 找规律题.儿子的编号减去 小于它编号的最大的fibonacci数 即可得到它父亲的编号. 然后两个节点都暴力上跳就好了.预处理一下fibonacci数,每次二分查找即可. #include< ...

  7. struct and union example

    1. StructHandler.c: /* * StructHandler.c * *  Created on: Jul 6, 2013 *      Author: wangle */#inclu ...

  8. PAT_A1028#List Sorting

    Source: PAT A1028 List Sorting (25 分) Description: Excel can sort records according to any column. N ...

  9. ThinkPHP5验证码不显示的原因及解决方法

    其实很久之前刚学习tp5框架的时候就遇到了这个问题,解决完后一直没再出过问题,今天用以前的框架做新项目时又碰到了这个问题,这里记录一下 问题原因: 1.TP5本就存在这个bug 2.数据库连接不正常( ...

  10. zabbix--zabbix server的配置以及zabbix agent的安装配置

    1.zabbix  server端的配置在进行源码安装zabbix时已经配置好了,具体要配置的参数如下: ListenPort=10051 server服务的监听端口,默认是10051 DBHost= ...