2009-08-26 61 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

相關問題