2009-08-26 9 views
1

Als Teil eines sehr einfachen Installationsskriptes cmd.exe muss ich beim nächsten Neustart des Computers ein Programm ausführen. Ich möchte nicht, dass es danach läuft (es ist ein One-Shot-Konfigurations-Tool).Von cmd.exe-Skript, wie kann ich planen, eine Aufgabe beim nächsten Start (und nie wieder) auszuführen?

Das Programm wird tatsächlich ein anderes cmd.exe Skript aber jedes Beispiel sollte tun, da ich cmd/c auf das Skript selbst ausführen kann.

Was ist der beste Weg, dies zu tun?

+0

Welche Windows-Versionen muss es arbeiten? –

+0

XP, für jetzt. – paxdiablo

Antwort

1

könnten Sie die SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce Schlüssel

verwenden

Diese VB script helfen könnte. Auszug:

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

Alternativ können Sie REG.EXE verwenden, um dasselbe zu erreichen. Normalerweise bevorzuge ich REG.EXE, um die zusätzliche Denkweise einer Skriptsprache zu übernehmen. –

+0

@Krim: True, die Skriptsprache hier nur hinzufügen Protokoll und Fehlermanagement. Wenn Sie dieses zusätzliche Level nicht benötigen, reicht reg.exe aus. – VonC

+0

Winner standardmäßig, ich denke: Nein, eigentlich ist es eine gute Antwort, und wir * * brauchen Fehlerbehandlung, also werde ich es wahrscheinlich in VBScript tun. Danke, VonC. – paxdiablo