2009-08-26 7 views
1

Dans le cadre d'un script d'installation cmd.exe très simple, j'ai besoin d'exécuter un programme au prochain redémarrage de la machine. Je ne veux pas que ça marche après (c'est un outil de configuration en une fois).À partir du script cmd.exe, comment puis-je planifier une tâche à exécuter lors du prochain démarrage (et plus jamais)?

Le programme sera en fait un autre cmd.exe script mais tout exemple devrait faire puisque je peux exécuter cmd/c sur le script lui-même.

Quelle est la meilleure façon de procéder?

+0

Sur quelles versions de Windows faut-il travailler? –

+0

XP, pour le moment. – paxdiablo

Répondre

1

Vous pouvez utiliser la touche SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

Cette VB script pourrait aider. Extrait:

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

Alternativement, vous pouvez utiliser REG.EXE pour accomplir la même chose. Je préfère généralement REG.EXE pour encourir l'esprit-bogue supplémentaire d'un langage de script. –

+0

@Krim: true, le langage de script ici ajoute uniquement la gestion des journaux et des erreurs. Si vous n'avez pas besoin de ce niveau supplémentaire, reg.exe est suffisant. – VonC

+0

Gagnant par défaut, je suppose :-) Non, en fait c'est une bonne réponse, et nous * avons * besoin de la gestion des erreurs, donc je vais probablement le faire dans VBScript. Merci, VonC. – paxdiablo

Questions connexes