c语言or,C语言实现关机or重启

其实这个程序是调用了C:\windows\system32\shutdown.exe

这个文件的

Windows

XP系统通过一个名为Shutdown.exe的程序来完成关机操作(位置在Windows\System32下),一般情况下XP的关机是由关机程序shutdown.exe来实现的,关机的时候调用shutdown.exe。由此可知要阻止强行关机就是要取消对shutdown.exe的调用。

shutdown.exe -a         取消关机

shutdown.exe -f         强行关闭应用程序。

shutdown.exe -l         注销当前用户。

shutdown.exe -s -t 时间     设置关机倒计时。

shutdown.exe -c"消息内容"    输入关机对话框中的消息内容(不能超127个字符)。

比如你的电脑要在23:00关机,可以选择“开始→运行”,输入“at 23:00 Shutdown

-s”,这样,到了23点,电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机,可以输入“Shutdown.exe

-s -t 3600”,这里表示60分钟后自动关机,“3600”代表60分钟。

如果想取消的话,可以在运行中输入“shutdown -a”。另外输入“shutdown

-i”,则可以打开设置自动关机对话框,对自动关机进行设置。

Windows

XP的关机是由Shutdown.exe程序来控制的,位于WindowsSystem32文件夹中。如果想让Windows

2000也实现同样的效果,可以把Shutdown.exe复制到系统目录System32下

代码:

main()

{

system("shutdown -s -t 3600");

}

----------------------------------------------------------------------------------------------------------------------------

C语言中命令如下:

重启

#include

main()

{

system("shutdown /r");

}

关机

#include

main()

{

system("shutdown /s");

}

XP系统下

用shutdown 命令

用法: SHUTDOWN [-i | -l | -s | -r | -a] [-f] [-m \\computername] [-t

xx] [-c "co

mment"] [-d up:xx:yy]

没有参数 显示此消息(与 ? 相同)

-i 显示 GUI 界面,必须是第一个选项

-l 注销(不能与选项 -m 一起使用)

-s 关闭此计算机

-r 关闭并重启动此计算机

-a 放弃系统关机

-m \\computername 远程计算机关机/重启动/放弃

-t xx 设置关闭的超时为 xx 秒

-c "comment" 关闭注释(最大 127 个字符)

-f 强制运行的应用程序关闭而没有警告

-d [u][p]:xx:yy 关闭原因代码

u 是用户代码

p 是一个计划的关闭代码

xx 是一个主要原因代码(小于 256 的正整数)

yy 是一个次要原因代码(小于 65536 的正整数)

----------------------------------------------------------------------------------------------------------------------------

#include "stdafx.h"

#include

#include

int main()

{

//定义关机的时候发送给所有用户的消息

LPSTR msg="Reboot ";

//尝试用最简单的API函数关机

if(ExitWindowsEx(EWX_REBOOT, 0))return TRUE;

if(ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))return TRUE;

//因为上面的关机不成功,所以需要调整本进程的特权

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES |

TOKEN_QUERY, &hToken)) return FALSE;

//获取关机的特权SE_SHUTDOWN_NAME

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1;

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

(PTOKEN_PRIVILEGES)NULL, 0);

//判断是NT内核还是9x内核,选择用不同的方式

if(!(GetVersion() & 0x80000000))

InitiateSystemShutdown(NULL, msg, 20, TRUE, TRUE);

else if (!ExitWindowsEx(EWX_POWEROFF, 0))

if(!ExitWindowsEx(EWX_POWEROFF|EWX_FORCE, 0))

return FALSE;

return TRUE;

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

我举个例子给你吧..

这个是..

打开了..倒数60秒关机..

显示"快说你是猪!不然就关机"..

如果输入的是"我是猪"..那么就取消关机..

如果输入的不是"我是猪"..那么就不取消..

#include"stdio.h"

#include"stdlib.h"

void main()

{

char write[100];

system("shutdown -s -t 60"); //关机命令,这个60是秒数,可以自己设定.

printf("快说你是猪!不然就关机!\n");

gt:

scanf("%s",write);

if(strcmp(write,"我是猪")==0)

{

printf("哈哈,你是猪~\n");

system("shutdown -a");

}

if(strcmp(write,"我是猪")!=0)

{

printf("还不说是吧?不说就等关机!\n");

goto gt;

}

}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值