在Windows启动时运行脚本而无需用户登录

Kar*_*ald 14 windows cron startup scheduled-tasks

这是一台每天早上都打开的Windows 2003计算机,但直到几个小时后才会登录.

我想用它们之间的时间来运行备份脚本c:\ script\backup.cmd

机器启动后如何才能无人值守?

我尝试了2个注册表项,但这导致脚本在用户登录后运行(为时已晚):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
Run Code Online (Sandbox Code Playgroud)

最后我使用了Windows TaskScheduler,他有这样的选择,但我想知道是否还有其他可能性?

Tri*_*anK 19

简短的回答: GPEDIT.MSC(开始,运行,输入gpedit.msc)

Windows 2000及以上[1]提供了一个计算机启动脚本在策略编辑器集合:

  • 计算机设置 - > Windows设置 - > 脚本(启动/关闭)

这里有一个等同的登录脚本区域(即后电脑启动时,如果用户登录)在用户配置位.

更长:

GPEDIT.MSC是组策略编辑控制台,在直接使用时针对本地计算机的组策略存储运行,因此它对于设置仅本地参数很有用.使用Active Directory时,相同的界面用于编辑林主机组策略对象(GPO),因此可以在一堆计算机上使用相同的设置.

如您所述,计算机启动脚本在计算机上下文中运行,即LocalSystem,因此它们通常无法访问需要某个用户或组成员身份才能工作的网络驱动器,依此类推.当计算机访问网络时,他们通常(有例外)使用他们的MACHINENAME $帐户.

一个启动脚本是得到一个进程运行的机器启动时的快速简便的方法.

但是,计算机启动过程将受到运行程序所需时间的影响,因此您可能希望确保使用批处理文件中的START命令调用它,或指定不等待可执行文件在任何脚本中完成你使用的语言.(关键点是:异步运行脚本,除非它是关键的,或者不需要异步运行,因为它总是会花费时间.长靴子=不满意的用户).

使用Win32服务是另一种选择 - 您可以使用Resource Kit中的SRVANY实用程序来"service-ify"几乎任何可执行文件.VS.Net 2002及更高版本还允许您直接构建托管服务.

任务计划得到多少更能够作为对Vista/2008,能够在启动时在空闲到运行脚本,和/或在事件日志中生成或某些其他条件都满足:它很酷!计划任务的优势在于能够指定运行任务的用户帐户(如果这对您很重要).

Caveat Scriptor:http: //support.microsoft.com/kb/256320

异步运行启动脚本:http: //msdn.microsoft.com/en-us/library/ms811602.aspx

Vista任务计划程序(新功能):http: //technet.microsoft.com/en-us/appcompat/aa906020.aspx

[1] Windows XP,2003,Vista/2008,Windows 7/2008R2,Windows 8/2012,Windows 8.1/2012R2,Windows 10/Windows Server 2016.一切.但是NT4没有!


Gat*_*ler 8

您已经概述了一个很好的解决方案:

设置要在"启动"时运行的计划任务,并允许在用户未登录时运行作业.