日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VC驿站黑客编程(关机,重新启动,注销)

發布時間:2024/3/7 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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驿站黑客编程(关机,重新启动,注销)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。