VC驿站黑客编程(关机,重新启动,注销)
- 此程序在VS2013下编译通过,假设换到编译器,大家能够稍作改动使用
- #include<Windows.h>
- #include<tchar.h>
- #include"resource1.h"
- #pragma warning(disable:4996)
- BOOL EnableShutDownPriv()
- {
- HANDLE hToken = NULL;
- TOKEN_PRIVILEGES tkp = {0};
- //打开当前程序的权限令牌
- if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
- {
- return FALSE;
- }
- if (!LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid))
- {
- CloseHandle(hToken);
- return FALSE;
- }
- tkp.PrivilegeCount = 1;
- tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
- if (!AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),NULL,NULL))
- {
- CloseHandle(hToken);
- return FALSE;
- }
- return true;
- }
- //winMain是一个win32程序的入口点,
- //程序入口点: 1.console程序的入口点函数 main
- // 2.win32程序的入口点函数 WinMain
- // 3.dll32程序的入口点函数 DllMain
- // 4.服务程序的入口点函数 ServiceMain
- // 5.驱动程序入口点函数 Driver
- //參数1,HINSTANCE hInstance 应用程序实例句柄
- //參数2。HINSTANCE hPrevInstance前一个程序实例
- //參数3。LPSTR lpCmdLine 是一个用户运行应用程序时传入的參数
- //參数4,int nShowCmd假设有窗体以什么形态显示窗体,最大化,最小化
- //reset window status 又一次设置window状态
- /*
- C4996以前不是警告么?如今升级啦?
- 尝试这个
- 1.Project Properties > Configuration Properties > C/C++ > General > SDL checks关掉
- 其它方法:
- 2.#pragma warning(disable: 4996)
- 3。
- /wd 4996
- */
- BOOL ReSetWindow(DWORD dwFlag, BOOL bForce)
- {
- //推断又一次设置的标志
- switch (dwFlag)
- {
- case EWX_LOGOFF:
- case EWX_REBOOT:
- case EWX_SHUTDOWN:
- case EWX_POWEROFF:
- break;
- default:
- return FALSE;
- }
- //获取电脑系统版本号
- OSVERSIONINFO osvi = { 0 };
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- if (!GetVersionEx(&osvi))
- {
- return FALSE;
- }
- DWORD highVersion;
- DWORD lowVersion;
- //获取主版本号号
- highVersion = osvi.dwMajorVersion;
- //获取次版本号号
- lowVersion = osvi.dwMinorVersion;
- DWORD plat = osvi.dwPlatformId;
- if (plat == VER_PLATFORM_WIN32_NT)
- {
- EnableShutDownPriv();
- }
- //在window中通常是占领不同的位数表示不同的值,一般通过|来获取两个或两个以上的效果
- dwFlag = bForce ?
- dwFlag | EWX_FORCE : dwFlag|EWX_FORCEIFHUNG;
- ExitWindowsEx(dwFlag, 0);
- }
- INT_PTR CALLBACK DialogProc(
- _In_ HWND hwndDlg,
- _In_ UINT uMsg,
- _In_ WPARAM wParam,
- _In_ LPARAM lParam
- )
- {
- TCHAR tStr[20] = { 0 };
- switch (uMsg)
- {
- case WM_INITDIALOG:
- {
- //获取窗体句柄
- HWND hComBox = GetDlgItem(hwndDlg, IDC_COMBO1);
- //往combobox中插入值
- SendMessage(hComBox, CB_INSERTSTRING, 0, (LPARAM)_T("注销"));
- SendMessage(hComBox, CB_INSERTSTRING, 1, (LPARAM)_T("重新启动"));
- SendMessage(hComBox, CB_INSERTSTRING, 2, (LPARAM)_T("关机"));
- //选择button
- SendMessage(hComBox, CB_SELECTSTRING, 0, (LPARAM)_T("注销"));
- //获取屏幕大小
- int witdh = GetSystemMetrics(SM_CXSCREEN);
- int height = GetSystemMetrics(SM_CYSCREEN);
- RECT rect;
- GetWindowRect(hwndDlg, &rect);
- //获取对话框的大小
- int dlgW = rect.right - rect.left;
- int dlgH = rect.top = rect.bottom;
- //设置窗体位置
- SetWindowPos(hwndDlg, 0, witdh / 2 - dlgW / 2, height / 2 - dlgH / 2, dlgW, dlgH, SWP_SHOWWINDOW);
- }
- break;
- case WM_COMMAND:
- {
- switch (wParam)
- {
- case IDOK:
- GetDlgItemText(hwndDlg, IDC_COMBO1, tStr, 20);
- if (wcscmp(tStr, _T("注销")))
- {
- ReSetWindow(EWX_LOGOFF, FALSE);
- }
- else if (wcscmp(tStr, _T("重新启动")))
- {
- ReSetWindow(EWX_REBOOT, FALSE);
- }
- else if (wcscmp(tStr, _T("关机")))
- {
- ReSetWindow(EWX_SHUTDOWN, FALSE);
- }
- break;
- case IDCANCEL:
- if (MessageBox(NULL,_T("是否关闭"),_T("提示"),MB_OKCANCEL)==IDOK)
- {
- EndDialog(hwndDlg, IDCANCEL);
- }
- break;
- default:
- break;
- }
- }
- break;
- default:
- break;
- }
- return 0;
- }
- int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
- {
- if (strcmp(lpCmdLine, "/r") == 0)
- {
- ReSetWindow(EWX_REBOOT, FALSE);
- }
- else if (strcmp(lpCmdLine,"/f")==0)
- {
- ReSetWindow(EWX_LOGOFF, FALSE);
- }
- else if (strcmp(lpCmdLine,"/s")==0)
- {
- ReSetWindow(EWX_SHUTDOWN, FALSE);
- }
- else
- {
- DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
- }
- return 0;
- }
VC驿站黑客编程(关机,重新启动,注销)的更多相关文章
- C# 实现系统关机、注销、重启、休眠、挂起
原文:C# 实现系统关机.注销.重启.休眠.挂起 核心代码如下: using System; using System.Text; using System.Diagnostics; using Sy ...
- 书评第001篇:《C++黑客编程揭秘与防范》
本书基本信息 作者:冀云(编著) 出版社:人民邮电出版社 出版时间:2012-6-1 ISBN:9787115280640 版次:1 页数:265 字数:406000 印刷时间:2012-6-1 开本 ...
- VC++动态链接库(DLL)编程深入浅出(zz)
VC++动态链接库(DLL)编程深入浅出(zz) 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用 ...
- 用VC进行COM编程所必须掌握的理论知识
一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...
- Python黑客编程基础3网络数据监听和过滤
网络数据监听和过滤 课程的实验环境如下: • 操作系统:kali Linux 2.0 • 编程工具:Wing IDE • Python版本:2.7.9 • 涉及 ...
- Python黑客编程2 入门demo--zip暴力破解
Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...
- 今天逛VC驿站 的收获
1.C++ 如何定义一个定长字符串, 若不足位数,就补字符串"0"? eg: CString str1 = “123”;不足20位,前面补“0”,实现效果为“00000000000 ...
- 【转】VC++消息钩子编程
VC++消息钩子编程
- VC++网络高级编程
内含<VC网络高级编程>电子书 及源代码. 第一章.TCP/IP协议.第二章.Winsock网络编程接口:第二章.Visual C++与网络编程:第四章.基本网络编程技术:第五章.Teln ...
随机推荐
- 洛谷——P3914 染色计数
P3914 染色计数 题目描述 有一颗NN个节点的树,节点用1,2,\cdots,N1,2,⋯,N编号.你要给它染色,使得相邻节点的颜色不同.有MM种颜色,用1,2,\cdots,M1,2,⋯,M编号 ...
- sdoi2018酱油鸡
ruand1滚粗啦,然后过来写游记 四月是你の省选... day -1 老师突然告诉我们说 day2 回来参加月考,心态爆炸. day0 坐车,颓,和队爷zpd补了b站翻唱2017top100,晚上收 ...
- NOIP2010关押罪犯
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示 ...
- 【树链剖分】【分块】【最近公共祖先】【块状树】bzoj1984 月下“毛景树”
裸题,但是因为权在边上,所以要先把边权放到这条边的子节点上,然后进行链更新/查询的时候不能更新/查询其lca. #include<cstdio> #include<cmath> ...
- Python中xPath技术和BeautifulSoup的使用
xpath基本知识 XPath语法:使用路径表达式来选取XML或HTML文档中的节点或节点集 路径表达式 nodename:表示选取此节点的所有子节点 / : 表示从根节点选取 // :选择 ...
- 软件配置篇-MySQL下载及安装
1.进入MySQL官网下载 下载地址:https://dev.mysql.com/downloads/mysql/ 选择合适的版本下载. 2.安装MySQL 解压后文件夹一般名为:mysql-x.x. ...
- BUG:Yii登录时 101 net::ERR_CONNECTION_RESET
Bug描述:YII web入口登录,无法登录一直等待,最终重定向 原因:设置的默认路由DefauRoute中的控制器中有错误,导致无法跳转找指定的路由规则 解决方案:这就多亏了SourceTree了, ...
- 【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】
本次使用POI处理xlsx文件,莫名的遇到了一个无法逾越的问题. 总共71个xlsx文件,单个文件最大达到50M以上,71个xls文件摆在那里就有3-4G的大小. 在起始处理的时候,发现原本适用于正常 ...
- Oracle Service Bus Socket Adapter调整的参数
之前在一个客户中做压力测试时候Oracle Service Bus性能大概达到900tps左右,和客户期望的1600tps有很大差距. 在研究了Socket Adapter的工作原理之后,判断可能是O ...
- Coherence生产环境异常定位过程
8月1日前广西发生了一次地震, 8月份前又发生了好几次台风,估计对地下的光缆有点损害(比如5根断了2根之类),感觉家里的网速都慢了好多,在客户那里部署的coherence缓存环境也出现了问题,两台hp ...