Как эмулировать реестр в Windows для тестирования программ?

Мое приложение широко читает и изменяет реестр Windows. Из-за характера приложения существует возможность уничтожения системы.

Чтобы избежать разрушения системы, я хочу создать временную копию моего реестра и использовать копию (файл .reg всего? Или любой другой подходящий формат экспорта) в своем приложении. Я предпочел бы сохранить все функции Windows одинаковыми, поэтому для тестирования я хочу подключить функции реестра моего собственного приложения к DLL, которая перенаправит все обращения к реестру в файл.

Я искал несколько библиотек, но такого не существует, или, может быть, я не знаю, что искать. Что я могу сделать в моей ситуации?

Короче:

Я хочу эмулировать реестр Windows

Я хочу создать подключаемую DLL, которая будет внедрена в мое собственное приложение

Хук DLL будет перехватывать все функции реестра Windows и перенаправлять их в файл в каталоге DLL.

Существует ли реализация реестра Windows с открытым исходным кодом? У меня есть только заголовки, но мне нужно точно такое же поведение, как в Windows, чтобы тщательно протестировать приложение.

1

Решение

Что я могу сделать в моей ситуации?

Реализуйте уровень абстракции поверх API реестра и получите доступ к API через уровень абстракции. Затем вставьте реализацию в код, который требует доступа к реестру.

class SettingsStore {
public:
SettingsStore(const std::string&); // receive path or "unique key" for your settings
virtual ~SettingsStore() = 0;
virtual std::string GetValue(const std::string& key) = 0;
virtual void SetValue(const std::string& key, const std::string& value) = 0;
// ...
};

class RegistryStore: public SettingsStore {
public:
SettingsStore(const std::string&); // receive path or "unique key" for your settings
virtual ~SettingsStore();

// implement in terms of Windows Registry API
virtual std::string GetValue(const std::string& key) override;
virtual void SetValue(const std::string& key, const std::string& value) override;
// ...
private:
// registry handle here
};

После этого реализуйте свой код в терминах вставленной ссылки на хранилище настроек.

Тогда ваш тестовый код может зависеть от TestStore (который расширяет SettingsStore) или чего-либо еще.

Короче:

Я хочу эмулировать реестр Windows

Я хочу создать подключаемую DLL, которая будет внедрена в мое собственное приложение

Это звучит сложно (и похоже на проблему x-y). Запрещает ли вам реализовать решение выше?

3

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector