微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Windows中模拟registry进行程序testing?

我的应用程序广泛读取和更改Windowsregistry。 由于应用程序的性质,可能会破坏系统。

为了避免系统破坏,我想创build我的registry的临时副本,并在我的应用程序中使用copy(.reg文件的所有内容?或任何其他合适的导出格式)。 我宁愿保持所有的窗口函数相同,所以,为了testing我想钩我自己的应用程序的registry函数与DLL将redirect到一个文件的所有registry访问。

我找了几个图书馆,但没有这样的事情,或者我不知道如何search。 我可以在我的情况下做什么?

简而言之:

在Windows服务中模拟用户

如何模拟或触发机器检查exception?

将焦点集中到使用CreateProcessAsUser从系统服务启动的窗口

如果ImpersonateSelf()失败后RevertToSelf()是致命的吗?

在允许的进程之间传递Windows安全令牌

我想模拟Windowsregistry

我想创build一个钩子DLL,它将被注入到我自己的应用程序中

钩子DLL将钩住所有的Windowsregistry函数,并将它们redirect到DLL目录中的文件

有没有Windowsregistryfunction的开源实现? 我只有标题,但我需要与Windows提供的完全相同的行为来彻底testing应用程序。

线程模拟的多级使用

在Mac OS X下仿真Linux二进制文件

不带SeImpersonatePrivilege的ImpersonateLoggedOnUser

某些系统认的.lnk文件在模拟用户下启动的问题

天青本地存储模拟器发出400个错误的请求

我可以在我的情况下做什么?

注册表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 };

之后,根据注入的Settingsstore引用来实现您的代码

你的测试代码可以依赖于TestStore(扩展了Settingsstore)等等。

简而言之:

我想模拟Windows注册

我想创建一个钩子DLL,它将被注入到我自己的应用程序中

这听起来很复杂(和xy问题类似)。 以上实施解决方案是否令人望而却步?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐