2013-08-18 1 views
0

J'ai un script qui modifie une valeur de registre, avant de le faire, il fait une sauvegarde de la clé de registre en utilisant regedit /e pour créer un fichier .reg.Puis-je obtenir un code de sortie de regedit/s en cours d'exécution?

Si le script est exécuté une deuxième fois et que le fichier de sauvegarde .reg existe, je demande à l'utilisateur s'il souhaite ajouter sa sauvegarde dans le registre. Parce que je ne veux pas confondre les utilisateurs qui n'auront aucune idée réelle de ce qui se passe avec des invites supplémentaires qu'ils pourraient ne pas comprendre, j'utilise le code suivant pour ce faire sans demander à l'utilisateur s'il veut importer:

Set objShell = CreateObject("WScript.Shell") 
objShell.Run"regedit /s " & """" & BackupFile & """" , 0, True 

y at-il un moyen d'obtenir un code de sortie de la commande regedit pour le succès ou l'échec de l'importation regedit fichier de la sauvegarde?

Répondre

0

utilisation

Return = objShell.Run("regedit /s " & """" & BackupFile & """" , 0, True) 

Return contient la valeur renvoyée.

+0

Duh. Je ne pense pas directement, bien sûr. Je ne peux pas croire que j'ai oublié ça. – andyx

+0

Il semble toujours fonctionner, j'ai essayé de changer les autorisations sur la clé de registre, mais cela a encore fonctionné. Savez-vous de toute façon forcer cela à échouer afin que je puisse tester les échecs? – andyx

+0

qui ne semble pas fonctionner. Je reçois toujours un code de retour de 0 même si cela ne fonctionne pas. – andyx

3

regedit ne renvoie pas de code d'état. Utilisez reg.exe avec les import au lieu subcommand:

rc = objShell.Run("reg import """ & BackupFile & """" , 0, True) 

If rc = 0 Then 
    WScript.Echo "Import successful." 
Else 
    WScript.Echo "Import failed. (" & rc & ")" 
End If 
Questions connexes