2013-08-18 3 views
0

У меня есть сценарий, который изменяет значение реестра, прежде чем это сделать, он создает резервную копию раздела реестра с помощью regedit /e для создания REG-файла.Могу ли я получить код выхода из режима regedit/s?

Если сценарий запускается второй раз и существует резервный файл .reg, я спрашиваю у пользователя, хотят ли они добавить свою резервную копию в реестр.

Поскольку я не хочу путать пользователей, которые не будут иметь реального представления о том, что происходит с дополнительными подсказками, которые они могут не понимать, я использую следующий код для этого, не спрашивая пользователя, хотят ли они импортировать:

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

есть ли способ, чтобы получить код выхода из regedit команды для достижения успеха или неудачи regedit импортера в резервной копии REG-файл?

ответ

0

Применение

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

Return содержит возвращаемое значение.

+0

ДУХ. Конечно, я не думаю. Не могу поверить, что я это забыл. – andyx

+0

Кажется, что все работает, я пытался изменить разрешения в разделе реестра, но он все еще работал. Знаете ли вы, что это все равно, чтобы заставить вас потерпеть неудачу, чтобы я мог протестировать сбои? – andyx

+0

, который, похоже, не работает. Я всегда получаю код возврата 0, даже если он не работает. – andyx

3

regedit не возвращает код состояния. Используйте reg.exe с import подкоманде вместо:

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

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