使用C语言编写一个强制关机程序

 更新时间:2023年11月29日 08:40:48   作者:世俗ˊ  
这篇文章主要为大家详细介绍了如何使用C语言实现一个简单的"流氓软件",一个可以强制关机恶作剧关机程序,输入指定指令才可以解除,感兴趣的小伙伴可以学习一下

一、项目介绍

C语言实现一个简单的"流氓软件",一个可以强制关机恶作剧关机程序,输入指定指令可以解除

二、运行截图

然后当你输入“n”才可以解锁关机。 

三、完整源码

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <conio.h>
 
int main()
{
    char input[10];
    printf("警告!您的计算机将在一分钟后关机,请保存好您的工作并退出所有程序!");
    printf("是否确认关机?(y/n): ");
    scanf("%s", input);
 
    while (1) {
        if (strcmp(input, "y") == 0 || strcmp(input, "Y") == 0) {
            // 记录用户选择到日志文件
            FILE *logFile = fopen("D:/a1.txt", "a");
            if (logFile != NULL) {
                time_t currentTime;
                struct tm *localTime;
                time(&currentTime);
                localTime = localtime(&currentTime);
                fprintf(logFile, "%04d-%02d-%02d %02d:%02d:%02d - 用户选择了关机\n",
                    localTime->tm_year + 1900, localTime->tm_mon + 1, localTime->tm_mday,
                    localTime->tm_hour, localTime->tm_min, localTime->tm_sec);
                fclose(logFile);
            }
            // 执行滑动关机操作
            system("shutdown /r /t 60");
            // 显示倒计时
            for (int i = 60; i >= 0; i--) {
                printf("\r倒计时:%d秒", i);
                fflush(stdout);
                sleep(1);
 
                if (_kbhit()) { // 检测按键
                    char key = _getch(); // 获取按键值
                    if (key == 's' || key == 'S') { // 如果按下了's'或'S'键
                        // 记录用户选择到日志文件
                        FILE *logFile = fopen("D:/a1.txt", "a");
                        if (logFile != NULL) {
                            time_t currentTime;
                            struct tm *localTime;
                            time(&currentTime);
                            localTime = localtime(&currentTime);
                            fprintf(logFile, "%04d-%02d-%02d %02d:%02d:%02d - 用户选择了关机并取消关机\n",
                                localTime->tm_year + 1900, localTime->tm_mon + 1, localTime->tm_mday,
                                localTime->tm_hour, localTime->tm_min, localTime->tm_sec);
                            fclose(logFile);
                        }
                        // 执行取消关机操作
                        system("shutdown /a");
                        return 0;
                    }
                }
            }
            return 0;
        } else if (strcmp(input, "n") == 0 || strcmp(input, "N") == 0) {
            printf("取消关机操作。");
            return 0;
        } else {
            printf("输入错误,请重新输入");
            printf("是否确认关机?(y/n): ");
            scanf("%s", input);
        }
    }
 
    return 0;
}

程序首先显示警告信息,并询问用户是否确认关机。如果用户输入"y"或"Y",则程序会记录用户的选择到日志文件(D:/a1.txt),然后执行关机操作,并在倒计时60秒后关闭计算机。如果用户输入"n"或"N",则程序会取消关机操作。如果用户输入其他字符,则程序会提示输入错误并重新询问用户是否确认关机。

到此这篇关于使用C语言编写一个强制关机程序的文章就介绍到这了,更多相关C语言关机内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言基础使用IDE快速开发的方法

    C语言基础使用IDE快速开发的方法

    这篇文章主要介绍了C语言基础使用IDE快速开发的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • C++读取wav文件中的PCM数据

    C++读取wav文件中的PCM数据

    这篇文章主要为大家详细介绍了C++读取wav文件中的PCM数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • opencv C++模板匹配的简单实现

    opencv C++模板匹配的简单实现

    这篇文章主要介绍了opencv C++模板匹配的简单实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C语言详解strcmp函数的分析及实现

    C语言详解strcmp函数的分析及实现

    strcmp函数语法为“int strcmp(char *str1,char *str2)”,其作用是比较字符串str1和str2是否相同,如果相同则返回0,如果不同,前者大于后者则返回1,否则返回-1
    2022-05-05
  • Linux下C语言的fork()子进程函数用法及相关问题解析

    Linux下C语言的fork()子进程函数用法及相关问题解析

    fork()函数在Linux下可以用于产生一个子进程,这里我们挑选了两个fork相关的面试题,来看一下Linux下C语言的fork()子进程函数用法及相关问题解析
    2016-06-06
  • C语言实现餐饮管理系统

    C语言实现餐饮管理系统

    这篇文章主要为大家详细介绍了C语言实现餐饮管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C/C++动态分配与释放内存的区别详细解析

    C/C++动态分配与释放内存的区别详细解析

    以下是对C与C++中动态分配与释放内存的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09
  • C++编译器Clion的使用详解(总结)

    C++编译器Clion的使用详解(总结)

    Clion有一个比较让人郁闷的地方就是必须要把编译环境配置好了,IDE才去做代码分析等动作,但是还是有很多优点,本文重点给大家介绍C++编译器Clion的使用,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • 使用C++中string实现任意长度的正小数、整数之间加减法方法实例

    使用C++中string实现任意长度的正小数、整数之间加减法方法实例

    这篇文章主要介绍了利用C++中string函数实现任意长度的正小数、整数之间加减法方法实例,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • C++ 解决求两个链表的第一个公共结点问题

    C++ 解决求两个链表的第一个公共结点问题

    本文主要介绍了利用C++实现输入两个无环的单向链表时,找出它们的第一个公共结点的问题。文章中的示例代码简洁易懂,感兴趣的同学可以和小编一起学习一下
    2021-12-12

最新评论