这是一台每天早上开机的Windows 2003计算机,但几个小时后才会login。
我想用中间的时间运行备份脚本c:\ script \ backup.cmd
机器出现后我怎样才能开始这个无人看pipe?
我尝试了两个registry项,但这导致脚本在用户login后运行(这太晚了):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
最后我使用了Windows TaskScheduler,谁有这样的select,但我想知道是否有另一种可能性?
简短的回答: GPEDIT.MSC (开始,运行,GPEdit.msc)
Windows 2000及更高版本[1]在策略编辑器中提供计算机启动脚本集合:
用户配置位中有一个等效的登录脚本区域(即计算机启动后,用户登录时)。
更长:
GPEDIT.MSC是组策略编辑控制台,并且在直接使用本地计算机的组策略存储时运行,所以对于设置仅限本地的参数很有用。 使用Active Directory时,使用相同的界面来编辑林托管的组策略对象 (GPO),因此可以在一堆机器上使用相同的设置。
计算机启动脚本在计算机上下文中运行,即LocalSystem,因此它们通常无法访问需要特定用户或组成员资格才能工作的网络驱动器等等。 当计算机访问网络时,他们通常(有例外)使用他们的MACHINENAME $帐户。
启动脚本是在机器启动时使进程运行的一种快捷方式。
计算机的启动过程将受到运行程序所花费的时间的影响,所以您可能希望确保使用批处理文件中的START命令来调用它,或者指定不等待可执行文件在任何脚本中完成你使用的语言。 (关键之处在于:除非是非常重要的,否则不要异步运行脚本,因为它永远不会花时间 。长靴=不愉快的用户)。
使用Win32服务是另一种选择 – 您可以使用资源工具包中的SRVANY实用程序来“服务”几乎任何可执行文件。 VS.Net 2002及更高版本还允许您直接构建托管服务。
从Vista / 2008开始, Task Scheduler 的功能更强大,能够在启动时,空闲时和/或生成事件日志或满足其他某些条件时运行脚本:这非常酷! 计划任务具有可以指定任务运行的用户帐户的可能优势,如果这对你很重要的话。
警告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没有!
您已经列出了一个很好的解决方案:
设置计划任务以在启动时运行,并允许在用户未登录时运行作业。
您可以使用组策略gpedit.msc在系统启动时运行脚本
你这样做对我来说似乎很好; 但是如果你想要一个替代方法,那么当机器启动的时候服务就会开始,所以你可以编写一个服务来检测它是否是新的一天(以便重新启动),然后运行你的备份。
如果我是做这个服务的话,我会使用TCL,因为我知道它并且喜欢它,它有一个扩展twapi ,允许你将脚本作为服务运行。 其他脚本语言也可能有类似的设施。
有,如果你使用Active Directory。 如果您可以将计算机隔离到其自己的OU或使用WMI筛选,则可以分配一个具有计算机启动脚本的GPO。 这将确保即使有人通过安全模式进入并禁用了任务计划程序,在启动并连接到域时,脚本也会运行。