关于shutdown生成的可执行文件

时间:2022-12-23 12:46:18
我写了一个关机程序,代码是这样的:

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
system("shutdown -s -t 1000");
return 0;
}


直接点“调试”->"开始执行(不调试)"后可以运行,是这样的:
关于shutdown生成的可执行文件

但是如果点目录下生成的可执行文件,却无法运行,出现这个:
关于shutdown生成的可执行文件

这里并不会提示windows将关机,而且这个cmd关闭的时候会出现这个:
关于shutdown生成的可执行文件

关闭之后看到任务管理器中出现了好多cmd.exe*32,这样的:
关于shutdown生成的可执行文件

我用的是VS2008,请问是哪里的问题?

8 个解决方案

#1


system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问

#2


C:\> shutdown /?
用法: shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f]
    [/m \\computer][/t xxx][/d [p:]xx:yy [/c "comment"]]

    没有参数   显示帮助。这与键入 /? 是一样的
    /?         显示帮助。这与不键入任何选项是一样的
    /i         显示图形用户界面(GUI)。
               这必须是第一个选项
    /l         注销。这不能与 /m 或 /d 选项一起使用
    /s         关闭计算机
    /r         关闭并重启动计算机
    /a         放弃系统关闭。
               这只能在超时过程中使用
    /p         关闭本地计算机,没有超时或警告。
               这只能与 /d 选项一起使用
    /h         休眠本地计算机。
               这只能与 /f 选项一起使用
    /e         将计算机的意外关闭原因记入文档
    /m \\computer 指定目标计算机
    /t xxx     设置关闭前的超时为 xxx 秒。
               有效范围是 0-600,默认为 30
    /c "comment" 重启动或关闭的原因的注释。
               最大允许 127 个字符
    /f         强制正在运行的应用程序关闭而不事先警告用户
    /d [p:]xx:yy  提供重启动或关闭的原因
               p 表明重启动或关闭是计划内的
               xx 是主要原因号(小于 256 的正整数)
               yy 是次要原因号(小于 65536 的正整数)

此计算机上的原因:
(E = 预期 U = 意外 P = 计划, C = 自定义)
类别    主要    次要    标题

 U      0       0       其他(没有计划的)
E       0       0       其他(没有计划的)
E P     0       0       其他(计划的)
 U      0       5       其他故障: 系统没有反应
E       1       1       硬件: 维护(没有计划的)
E P     1       1       硬件: 维护(计划的)
E       1       2       硬件: 安装(没有计划的)
E P     1       2       硬件: 安装(计划的)
  P     2       3       操作系统: 升级(计划的)
E       2       4       操作系统: 重新配置(没有计划的)
E P     2       4       操作系统: 重新配置(计划的)
  P     2       16      操作系统: 服务包(计划中)
        2       17      操作系统: 热修补(没有计划)
  P     2       17      操作系统: 热修补(计划中)
        2       18      操作系统: 安全修补(没有计划)
  P     2       18      操作系统: 安全修补(计划中)
E       4       1       应用程序: 维护(没有计划的)
E P     4       1       应用程序: 维护(计划的)
E P     4       2       应用程序: 安装(计划中)
E       4       5       应用程序: 没有反应
E       4       6       应用程序: 不稳定
 U      5       15      系统故障: 停止错误
E       5       19      安全问题
 U      5       19      安全问题
E P     5       19      安全问题
E       5       20      网络连接性丢失(没有计划的)
 U      6       11      电源故障: 电线被拔掉
 U      6       12      电源故障: 环境
  P     7       0       旧版 API 关机

C:\>

#3


引用 1 楼 mujiok2003 的回复:
system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

#4


引用 3 楼 jack_MRliu 的回复:
Quote: 引用 1 楼 mujiok2003 的回复:

system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

权限不一样吧。你的VS是不是以管理员权限运行的?

#5


我用vs2010,吧你的代码copy进去.
不管运行哪里的exe都可以正常运行
显示"已经计划系统关机."

system把命令传给cmd执行.所以你每次运行程序都都产程一个cmd.exe是正常的
1000是秒,你试一试时间短一点的

#6


我的vs08是可以关机的,没有出现你的问题

#7


引用 4 楼 mujiok2003 的回复:
Quote: 引用 3 楼 jack_MRliu 的回复:

Quote: 引用 1 楼 mujiok2003 的回复:

system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

权限不一样吧。你的VS是不是以管理员权限运行的?


以管理员权限运行shutdown程序也不行

#8


引用 7 楼 jack_MRliu 的回复:
Quote: 引用 4 楼 mujiok2003 的回复:

Quote: 引用 3 楼 jack_MRliu 的回复:

Quote: 引用 1 楼 mujiok2003 的回复:

system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

权限不一样吧。你的VS是不是以管理员权限运行的?


以管理员权限运行shutdown程序也不行


那就用attach到调试器看看咯

#1


system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问

#2


C:\> shutdown /?
用法: shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f]
    [/m \\computer][/t xxx][/d [p:]xx:yy [/c "comment"]]

    没有参数   显示帮助。这与键入 /? 是一样的
    /?         显示帮助。这与不键入任何选项是一样的
    /i         显示图形用户界面(GUI)。
               这必须是第一个选项
    /l         注销。这不能与 /m 或 /d 选项一起使用
    /s         关闭计算机
    /r         关闭并重启动计算机
    /a         放弃系统关闭。
               这只能在超时过程中使用
    /p         关闭本地计算机,没有超时或警告。
               这只能与 /d 选项一起使用
    /h         休眠本地计算机。
               这只能与 /f 选项一起使用
    /e         将计算机的意外关闭原因记入文档
    /m \\computer 指定目标计算机
    /t xxx     设置关闭前的超时为 xxx 秒。
               有效范围是 0-600,默认为 30
    /c "comment" 重启动或关闭的原因的注释。
               最大允许 127 个字符
    /f         强制正在运行的应用程序关闭而不事先警告用户
    /d [p:]xx:yy  提供重启动或关闭的原因
               p 表明重启动或关闭是计划内的
               xx 是主要原因号(小于 256 的正整数)
               yy 是次要原因号(小于 65536 的正整数)

此计算机上的原因:
(E = 预期 U = 意外 P = 计划, C = 自定义)
类别    主要    次要    标题

 U      0       0       其他(没有计划的)
E       0       0       其他(没有计划的)
E P     0       0       其他(计划的)
 U      0       5       其他故障: 系统没有反应
E       1       1       硬件: 维护(没有计划的)
E P     1       1       硬件: 维护(计划的)
E       1       2       硬件: 安装(没有计划的)
E P     1       2       硬件: 安装(计划的)
  P     2       3       操作系统: 升级(计划的)
E       2       4       操作系统: 重新配置(没有计划的)
E P     2       4       操作系统: 重新配置(计划的)
  P     2       16      操作系统: 服务包(计划中)
        2       17      操作系统: 热修补(没有计划)
  P     2       17      操作系统: 热修补(计划中)
        2       18      操作系统: 安全修补(没有计划)
  P     2       18      操作系统: 安全修补(计划中)
E       4       1       应用程序: 维护(没有计划的)
E P     4       1       应用程序: 维护(计划的)
E P     4       2       应用程序: 安装(计划中)
E       4       5       应用程序: 没有反应
E       4       6       应用程序: 不稳定
 U      5       15      系统故障: 停止错误
E       5       19      安全问题
 U      5       19      安全问题
E P     5       19      安全问题
E       5       20      网络连接性丢失(没有计划的)
 U      6       11      电源故障: 电线被拔掉
 U      6       12      电源故障: 环境
  P     7       0       旧版 API 关机

C:\>

#3


引用 1 楼 mujiok2003 的回复:
system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

#4


引用 3 楼 jack_MRliu 的回复:
Quote: 引用 1 楼 mujiok2003 的回复:

system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

权限不一样吧。你的VS是不是以管理员权限运行的?

#5


我用vs2010,吧你的代码copy进去.
不管运行哪里的exe都可以正常运行
显示"已经计划系统关机."

system把命令传给cmd执行.所以你每次运行程序都都产程一个cmd.exe是正常的
1000是秒,你试一试时间短一点的

#6


我的vs08是可以关机的,没有出现你的问题

#7


引用 4 楼 mujiok2003 的回复:
Quote: 引用 3 楼 jack_MRliu 的回复:

Quote: 引用 1 楼 mujiok2003 的回复:

system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

权限不一样吧。你的VS是不是以管理员权限运行的?


以管理员权限运行shutdown程序也不行

#8


引用 7 楼 jack_MRliu 的回复:
Quote: 引用 4 楼 mujiok2003 的回复:

Quote: 引用 3 楼 jack_MRliu 的回复:

Quote: 引用 1 楼 mujiok2003 的回复:

system多半在shutdown执行结束后在返回的,试试换成简单命令试试(比如dir)

乱码的问题是字符集问


您的意思是shutdown命令还没有结束,所以程序执行不到最后?
可是直接在VS2008里运行的话就会显示关机
另外,如果按您的意思,这种关机程序应该如何写呢?

权限不一样吧。你的VS是不是以管理员权限运行的?


以管理员权限运行shutdown程序也不行


那就用attach到调试器看看咯