在没有用户登录的情况下在Windows启动时运行脚本

在没有用户登录的情况下在Windows启动时运行脚本,windows,cron,scheduled-tasks,startup,Windows,Cron,Scheduled Tasks,Startup,这是一台Windows 2003(或更高版本)机器,每天早上都会打开,但几个小时后才有人登录 我想使用这段时间运行备份脚本c:\script\backup.cmd 机器启动后,如何在无人看管的情况下启动 我尝试了2个注册表项,但这导致脚本在用户登录后运行(太晚了): 最后,我使用了Windows TaskScheduler,谁有这样的选项,但我想知道是否还有其他可能性?您已经概述了一个很好的解决方案: 将计划任务设置为在启动时运行,并允许作业在用户未登录时运行。您可以使用组策略gpedit.ms

这是一台Windows 2003(或更高版本)机器,每天早上都会打开,但几个小时后才有人登录

我想使用这段时间运行备份脚本c:\script\backup.cmd

机器启动后,如何在无人看管的情况下启动

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


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

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


将计划任务设置为在启动时运行,并允许作业在用户未登录时运行。

您可以使用组策略gpedit.msc在系统启动时运行脚本,您这样做的方式对我来说似乎很好;但是,如果您需要另一种方法,那么在机器启动时就会启动服务,这样您就可以编写一个服务来检测这是否是新的一天(以允许重新启动),然后运行备份


如果I将此作为一项服务来执行,我会使用TCL,因为我知道并喜欢它,它有一个扩展,允许您将脚本作为一项服务来运行。其他脚本语言可能也有类似的功能。

如果您使用的是Active Directory,就有。如果可以将计算机隔离到其自己的OU或使用WMI筛选,则可以为计算机分配具有启动脚本的GPO。这将确保即使有人通过安全模式进入并禁用任务计划程序,在启动和连接到域时,脚本也会运行。

简短回答:GPEDIT.MSC(启动、运行、GPEDIT.MSC)

Windows 2000及更高版本[1]在策略编辑器中提供计算机启动脚本集合:

  • 计算机设置->Windows设置->脚本(启动/关闭)
用户配置位中有一个等效的登录脚本区域(即,在计算机启动后,当用户登录时)

更长:

GPEDIT.MSC是组策略编辑控制台,在直接使用时与本地计算机的本地组策略存储运行,因此它对于设置仅本地的参数非常有用。使用Active Directory时,将使用类似的界面来编辑AD林承载的组策略对象(GPO),因此在一组计算机上可以使用相同的设置

计算机启动脚本在计算机上下文中运行,如您所述,即作为LocalSystem运行,因此它们通常无法访问需要特定用户或组成员身份才能工作的网络驱动器。当域成员计算机访问网络资源时,它们通常(除例外)使用其MACHINENAME$帐户进行身份验证,这允许您设置共享/NTFS权限以允许计算机访问这些资源

启动脚本是在机器启动时让进程运行的一种快速简便的方法

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

使用Win32服务是另一种选择-您可以使用资源工具包中的SRVANY实用程序来“服务化”几乎任何可执行文件。VS.NET2002及更高版本还允许您直接构建托管服务

从Vista/2008开始,任务调度程序的功能大大增强,能够在启动时、空闲时和/或在生成事件日志或满足某些其他条件时运行脚本:非常酷!计划任务的一个可能的优点是,如果对您很重要,可以指定任务运行所使用的用户帐户

警告脚本编写者:

异步运行启动脚本:

Vista任务计划程序(新增功能):


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

谢谢,这看起来很有趣。当有一天我不得不写一个服务时,我会看看TCl/Twapit这看起来又快又简单。进程将以哪个用户的身份运行?LocalSystem`?是的,这工作正常。但是我想禁用任务调度程序,所以我正在寻找一种不同的方法。谢谢,这是一件很好的事情,我在AD中有一些机器,有一天会尝试。谢谢,很明显,您从任何角度回答了这个问题。
计算机设置/配置-->Windows设置-->脚本
这可以通过打开本地组策略编辑器找到,因为没有人解释如何访问此窗口。@Trissank,我有一个Windows 2K,我们在其中克隆它(vmware)并将其与网络隔离(断开网络适配器),对我们的数据库进行了一些测试。但是,本地GPO启动/关闭脚本不再启动。本地GPO启动脚本依赖于可用的活动nertwork?等等,你有Windows 2000计算机?它们有时是网络连接的?这在2017年是一个非常非常糟糕的组合。无论如何,我很确定我曾经使用过在Windows 2000的工作组机器上使用此系统…不知道当网络断开连接时它会失败的任何具体原因,除非那里有根本性的错误-例如特定于脚本本身,或者它存储在Sysvol上的AD/而不是本地硬盘驱动器上,等等。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices