首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言惡作劇程式:關機倒數計時器

     編輯:關於C

經典惡作劇程式碼解析與安全警示

這是一個利用 Windows shutdown 指令的惡作劇程式,強制使用者輸入特定字串才能取消關機。雖然程式碼簡單,但涉及系統指令呼叫與安全風險,僅供學習參考,嚴禁用於惡作劇或破壞。

程式碼分析

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

int main() {
    char input[20];
    
    // 設定 120 秒後關機
    system("shutdown -s -t 120");
    
    while (1) {
        printf("請輸入「我是豬」三個字,否則電腦將在 2 分鐘後關機:\n");
        scanf("%19s", input); // 防止緩衝區溢位
        
        if (strcmp("我是豬", input) == 0) {
            // 取消關機
            system("shutdown -a");
            printf("關機已取消。\n");
            break;
        } else {
            printf("輸入錯誤,倒數繼續...\n\n");
        }
    }
    
    return 0;
}

關鍵技術點

1. system() 函數
呼叫作業系統命令列指令。shutdown -s -t 120 表示 120 秒後關機,shutdown -a 取消排程關機。

2. 字串比較
使用 strcmp 比較輸入字串與目標字串,相等時回傳 0。

3. 無限迴圈與跳出
while(1) 持續要求輸入,正確時 break 跳出。

安全與道德警示 ⚠️

  • 嚴禁惡意使用:在未經同意的電腦執行屬非法入侵行為
  • 資料遺失風險:強制關機會導致未儲存資料遺失
  • 系統指令注入風險:若輸入未過濾直接傳給 system(),可能被惡意利用
  • 跨平台問題:shutdown 參數在 Windows/Linux/macOS 不同

防範與解除方法

若中招,可在「執行」(Win+R) 中輸入 shutdown -a 取消關機,或開啟命令提示字元執行同指令。

學習價值

理解 system() 呼叫機制、字串處理、迴圈控制,但實務開發中應避免直接呼叫系統指令,改用平台 API(如 Windows InitiateSystemShutdownEx)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved