这是一台 Windows 2003 机器,每天早上都会打开,但直到几个小时后才有人登录。

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

机器启动后如何在无人值守的情况下启动它?

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

最后我使用了Windows TaskScheduler,它有这样的选项,但我想知道是否还有另一种可能性?

有帮助吗?

解决方案

简短回答: 通用编辑器 (开始、运行、GPEdit.msc)

Windows 2000及以上版本[1]提供一台计算机 启动脚本 策略编辑器中的集合:

  • 电脑设置 -> Windows 设置 -> 脚本(启动/关闭)

有一个等效的 登录 脚本区域(即计算机启动后,当用户登录时)在用户配置位中。

更长:

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

计算机启动脚本运行在 计算机环境, , IE。LocalSystem,正如您所指出的,因此它们通常无法访问需要特定用户或组成员身份才能工作的网络驱动器,等等。当计算机访问网络时,它们通常(有例外)使用其 MACHINENAME$ 帐户。

A 启动脚本 是在机器启动时运行进程的一种快速而简单的方法。

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

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

任务调度程序 得到 很多 自 Vista/2008 起功能更强大,能够在启动时、空闲时和/或生成事件日志或满足某些其他条件时运行脚本:它太酷了!计划任务的一个可能的优点是能够指定任务运行所用的用户帐户(如果这对您很重要)。

警告脚本编写者: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没有!

其他提示

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

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

您可以使用组策略gpedit.msc

在系统启动时运行脚本

你这样做的方式对我来说似乎很好;但是,如果您想要一种替代方法,那么当计算机启动时服务就会启动,这样您就可以编写一个服务来检测它是否是新的一天(以便重新启动),然后再运行备份。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top