2009-08-26 14 views
1

非常に単純なcmd.exeインストールスクリプトの一部として、マシンを再起動したときにプログラムを実行する必要があります。それ以降は実行したくない(ワンショット構成ツール)。cmd.exeスクリプトから、次回の起動時にタスクを実行するようスケジュール設定するにはどうしたらいいですか?

プログラムは実際に別のcmd.exeスクリプトですが、スクリプト自体でcmd/cを実行できるので、どの例でも実行する必要があります。

これを行う最善の方法は何ですか?

+0

どのWindowsのバージョンで動作する必要がありますか?今のところ –

+0

XPです。 – paxdiablo

答えて

1

あなたはこのVB scriptは助けることができるSOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceキー

を使用することができます。抽出:

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:ここでのスクリプト言語は、ログとエラー管理だけを追加します。余分なレベルが必要ない場合は、reg.exeで十分です。 – VonC

+0

デフォルトで勝者は、私は推測します:-)いいえ、実際には良い答えです。私たちは*エラー処理が必要なので、おそらくVBScriptで行います。ありがとう、VonC。 – paxdiablo