2009-08-26 29 views
1

作为非常简单的cmd.exe安装脚本的一部分,我需要在下次机器重新启动时运行程序。之后我不希望它运行(这是一次性配置工具)。从cmd.exe脚本,我如何安排任务在下次启动时运行(并且永不再次运行)?

该程序实际上是另一个cmd.exe脚本,但任何示例都应该这样做,因为我可以在脚本本身上运行cmd/c。

要做到这一点,最好的方法是什么?

+0

它必须使用哪个Windows版本? –

+0

XP,现在。 – paxdiablo

回答

1

您可以使用SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce关键

VB script可能会有帮助。提取:

workfile  = ifile.ReadLine 
strcomputer = ucase(left(workfile,instr(workfile,",")-1)) 
Set oReg  = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strcomputer & "\root\default:StdRegProv") 

if err.number <> 0 then 
ofile.WriteLine "[" & now() & "] " & strcomputer & " will NOT run once. Failed to set runonce install with error: " & Err.Number & "/" & left(Err.Description,17) 
else 
sKeyPathEnv  = "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" 
sValueName  = "Set_RunOnce" 
sKeyPath  = "SOFTWARE\Microsoft\Windows NT\CurrentVersion" 
sValueName  = "SystemRoot" 

oReg.GetExpandedStringValue HKLM, sKeyPath, sValueName, sSystemRoot 
oReg.SetStringValue HKLM, sKeyPathEnv, "Set_RunOnce", vRunOnce 

if Err.Number <> 0 then 
    ofile.WriteLine "[" & now() & "] " & strcomputer & " will NOT run once. Failed to set runonce install with error: " & Err.Number & "/" & left(Err.Description,17) 
else 
    ofile.WriteLine "[" & now() & "] " & strcomputer & " will run once via runonce at next reboot. " 
end if 
end if 
+0

或者,您可以使用REG.EXE来完成相同的事情。我通常更喜欢使用REG.EXE来招致脚本语言的额外麻烦。 –

+0

@Krim:true,这里的脚本语言只添加日志和错误管理。如果你不需要额外的级别,reg.exe就足够了。 – VonC

+0

赢家默认情况下,我猜:-)不,实际上这是一个很好的答案,我们*需要*需要错误处理,所以我可能会用VBScript来做。谢谢,VonC。 – paxdiablo

相关问题