Unicode与MultiByte之间的练习: Process Cleaner
#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的更多相关文章
- ASCII、ANSI、GB2312、Unicode、UTF-8之间的关系
1.ASCII码: ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于 ...
- 字符编码:Unicode和UTF-8之间的关系
Unicode和UTF-8之间的关系 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256 ...
- 举例说明Unicode 和UTF-8之间的转换
1)写这篇博客的原因 首先我要感谢这篇博客,卡了很久,看完下面这篇博客终于明白Unicode怎么转换成UTF-8了. https://blog.csdn.net/qq_32252957/article ...
- Unicode和UTF-8之间的关系
作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...
- Unicode和UTF-8之间的转换
转自:http://www.cnblogs.com/xdotnet/archive/2007/11/23/unicode_and_utf8.html#undefined 最近在用VC++开发一个小工具 ...
- SSIS无法在unicode和非unicode 字符串数据类型之间转换
场景:SSIS从oracle抽到sqlserver,一个表对表到数据仓库ODS层的抽取,没有任何逻辑结果遇到问题: SSIS无法在unicode和非unicode 字符串数据类型之间转换 如下图2个字 ...
- unicode和utf8之间的关系
,字符编码是计算机技术的基石,想要熟练使用计算机,懂得一点字符编码的知识,还是很有必要的. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit ...
- python中unicode, hex, bin之间的转换
python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个d ...
- SSIS 无法在 unicode 和非 unicode 字符串数据类型之间转换
最近在学SSIS,遇到一个问题,把平面文件源的数据导入到EXCEL中. 平面文件源的对象是CSV,读进来的PhoneNumber是 DT_STR 然后倒入Excel 对应列建立的是longtext 一 ...
随机推荐
- @staticmethod和@classmethod区别
转载自: https://www.cnblogs.com/wyongbo/p/python_static_method.html https://www.cnblogs.com/champaign/p ...
- linux IPC的FIFO
FIFO命名管道原型: #include <sys/stat.h> int mkfifo(const char *path, mode_t mode); int mkfifoat(int ...
- delphi动态创建控件
动态创建控件 其实动态创建控件很简单,相信看过本文后你会全明白的. 1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如: RegisterClass( TBut ...
- (1)centos7 安装与分区
xxxxx 系统运行级别 /etc/inittab #
- System之nanoTime函数
原文地址:https://blog.csdn.net/yumolan4325/article/details/79201766 1 System有一个静态的函数nanoTime函数,该函数是返回纳秒的 ...
- linux下根据根据进程号查端口、根据端口号查进程号汇总,以及netstat的相关资料(工作中匮乏的知识)
根据端口查进程: lsof -i:port netstat -nap | grep port 根据进程号查端口: lsof -i|grep pid netstat -nap | grep pid 根据 ...
- 前端通过url页面传值
例子:从A页面将‘myId’传到B页面 1.A页面传值 var url = encodeURI("html/editPostcard.html?myId="+ myId); win ...
- socket API CSocket CAsyncSocket 用法及区别
要进行网络编程就要和Socket打交道,Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别.虽然同步好用,不费劲,但不能满 ...
- Editor REST Client
Editor REST Client 制作一个http请求 请求行 GET https://example.com/comments/1 HTTP/1.1 POST https://example.c ...
- web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍
web前端Vue+Django rest framework 框架 生鲜电商项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...