Windows计划任务的一个问题
Posted 平静的寄居者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows计划任务的一个问题相关的知识,希望对你有一定的参考价值。
我的办公桌朝东,早上太阳刺眼,需要适当提高屏幕亮度才能看清楚屏幕,过了一会儿太阳不直射了,又要降低屏幕亮度以保护视力。老是手工操作嫌烦,就写了个小程序,放进Windows计划任务(Task Scheduler)。小程序调试的时候一切正常,但从计划任务启动时却不工作。
开始怀疑是权限的问题。设置任务以管理员账号运行,还是不行。
干脆用启动命令行的方式:
ProcessStartInfo pinfo = new ProcessStartInfo( FileName = "cmd.exe", Arguments = "/c foo.exe"); Process.Start(pinfo);
却发现根本启动不了。
又查了不少资料,最后才偶然发现,原来问题出在一个小小的设置。计划任务缺省设置是Run whether the user is logged on or not,即不管用户是否登录都运行,改成只有登录了才运行,就一切正常了。查了下,如果程序需要用户交互,比如需要打开命令行窗口,或者打开一个图形程序等,就必须设置成只有用户登录了才运行。
但是我的程序并没有界面,只是通过pinvoke调用了user32.dll和dxva2.dll里的几个api,如EnumDisplayMonitors,GetNumberOfPhysicalMonitorsFromHMONITOR,GetPhysicalMonitorsFromHMONITOR,SetMonitorBrightness等。看来,这几个api被认为是需要用户交互。
另外调用的PowrProf.dll里的几个api如PowerWriteACValueIndex,PowerSetActiveScheme等,不需要设置成只有用户登录才运行。看来,这些api被认为是不需要用户交互。
windows计划任务的问题。
不知道大家遇到这样的情况没有:
我在windows的任务计划里面添加了一个任务,定时运行一个软件,但是不知道怎么的,到时间后,那个软件的确运行了,只不过软件没有出现窗体界面,只能在任务管理器里面看到进程,并且软件运行后似乎并没有执行它的代码,其实就相当于没有运行一样。不知道哪位高人能解释下原因,另外说说解决方法哈,谢谢咯。
对了,我用at命令添加的任务哈,看看有什么问题没:
at 8:25 /every:M,T,W,Th,F,S,Su %systemroot%\nao.exe
2、如果你坚持使用AT命令,那么在软件里面添加运行时给自己发送消息也可以实现你要的功能。
3、使用schtasks命令建立任务计划(使用帮助使用 schtasks /?命令查看),或者直接使用命令tasks 打开界面根据向导添加系统任务,推荐使用这种方法。 参考技术A 没放到位置上
以上是关于Windows计划任务的一个问题的主要内容,如果未能解决你的问题,请参考以下文章
Windows 2008 任务计划程序 - 其他用户无法运行任务