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 一 ...
随机推荐
- SQL LIKE 运算符
SQL LIKE 运算符 在WHERE子句中使用LIKE运算符来搜索列中的指定模式. SQL LIKE 操作符 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式. 有两个通配符与LIKE运 ...
- Yii2中一些常用的参数
系统类型: <?= php_uname() ?> 解译引擎: <?= $_SERVER['SERVER_SOFTWARE'] ?>, Zend: <?= Zend_Ver ...
- Golang 标准库提供的Log(一)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1405754 G ...
- Java-Class-@I:io.swagger.annotation.ApiOperation
ylbtech-Java-Class-@I:io.swagger.annotation.ApiOperation 1.返回顶部 2.返回顶部 1. package com.ylbtech.api. ...
- 使用listFiles的FileFilter过滤来查找文件并处理
package test; import java.io.File; import java.io.FileFilter; public class MyFilter implements FileF ...
- HA配置
主T800 eth0 192.168.2.32备T600 eth1 192.168.2.33安装nginx yum install -y nginx 关闭主备的防火墙iptables.selinux ...
- Jeecg集成Swagger-ui
<context:component-scan base-package="springfox"/> <bean class="org.jeecgfra ...
- SPOJ VFMUL - Very Fast Multiplication (FFT)
题目链接:VFMUL - Very Fast Multiplication Description Multiply the given numbers. Input n [the number of ...
- 专题:OpenSSL
一.常用操作 对称加密: openssl enc -e -aes256 -base64 -in goal.file -out result.file 加密,-base64 指使用 base64 編码 ...
- Error: EBUSY: resource busy or locked, symlink "xxx" 的解决方法
上面是报错信息. 解决方法:当我们在npm i 安装依赖的时候,会遇到这个Error: EBUSY: resource busy or locked, symlink....的问题.解决的 办法就是关 ...