программно объединить файл .reg в реестр win32
-
09-06-2019 - |
Вопрос
Как лучше всего программно объединить файл .reg в реестр? Это для модульного тестирования; REG-файл - это тестовый артефакт, который будет добавлен, а затем удален в начале и в конце тестирования.
Или, если есть лучший способ провести юнит-тестирование в реестре ...
Решение
Можно удалить ключи реестра, используя файл .reg, хотя я не уверен, насколько хорошо это задокументировано. Вот как:
REGEDIT4
[-HKEY_CURRENT_USER\Software\<otherpath>]
-
перед именем ключа сообщает Regedit
, что вы хотите удалить ключ.
Чтобы запустить это без вывода сообщений, введите:
regedit /s "myfile.reg"
Другие советы
Если вы делаете это, я бы использовал команду reg (подробности ниже). Если вы можете сказать нам, с каким языком вы работаете, мы могли бы предоставить код для конкретного языка.
C: > reg /?
Операция REG [Список параметров]
Операция [QUERY | ДОБАВИТЬ | УДАЛИТЬ | КОПИЯ | СОХРАНИТЬ | ЗАГРУЗИТЬ | РАЗГРУЗИТЬ | ВОССТАНОВИТЬ | СРАВНИТЬ | ЭКСПОРТ | ИМПОРТ | ФЛАГИ]
Код возврата: (кроме REG COMPARE)
0 - успешно 1 - не удалось
Для получения справки по конкретному типу операции:
REG ADD /? REG DELETE /? [Пропущено] р>
Я посмотрел на это, проверив свои файловые ассоциации.
Похоже, что файл .reg просто вызывается как первый параметр исполняемого файла regedit.exe
в Windows. Р>
Таким образом, вы можете просто сказать regedit.exe " mytest.reg "
. В чем я не уверен, так это в том, как избавиться от всплывающего диалогового окна с запросом вашего подтверждения.
Используйте функцию Win32 API ShellExecute () или ShellExecuteEx (). Если комментарий «открыт», он должен объединить файл .reg. Я не проверял это, но это должно работать.
Одна из самых неприятных вещей в написании юнит-тестов - это работа с зависимостями. Одна из главных особенностей Test-Driven Development заключается в том, что она создает код, который не связан с его зависимостями. Круто, а?
Когда я задаю себе подобные вопросы, я ищу способы отделить код, который пишу, от зависимости. Отделите чтение реестра от сложности, которую вы хотите проверить.