以编程方式将 .reg 文件合并到 win32 注册表中

Posted

技术标签:

【中文标题】以编程方式将 .reg 文件合并到 win32 注册表中【英文标题】:programmatically merge .reg file into win32 registry 【发布时间】:2010-09-07 07:07:45 【问题描述】:

以编程方式将 .reg 文件合并到注册表中的最佳方法是什么?这是用于单元测试; .reg 文件是一个测试工件,将在测试开始和结束时添加然后删除。

或者,如果有更好的方法对注册表进行单元测试...

【问题讨论】:

【参考方案1】:

我通过检查我的文件关联进行了调查。

似乎 .reg 文件只是作为 Windows 上 regedit.exe 可执行文件的第一个参数调用。

所以你可以直接说regedit.exe "mytest.reg"。我不确定如何摆脱弹出的要求您确认的对话框。

【讨论】:

【参考方案2】:

使用 Win32 API 函数 ShellExecute() 或 ShellExecuteEx()。如果注释是“打开的”,它应该合并 .reg 文件。我还没有测试过,但它应该可以工作。

【讨论】:

“如果评论是‘开放的’”约翰尼·马蒂斯是什么意思?【参考方案3】:

可以使用 .reg 文件删除注册表项,但我不确定它的记录情况如何。方法如下:

REGEDIT4

[-HKEY_CURRENT_USER\Software\<otherpath>]

密钥名称前面的- 告诉Regedit 您要删除密钥。

要静默运行,请输入:

regedit /s "myfile.reg"

【讨论】:

【参考方案4】:

编写单元测试最令人沮丧的事情之一就是处理依赖关系。测试驱动开发最伟大的事情之一是它生成的代码与其依赖项分离。很酷吧?

当我发现自己提出这样的问题时,我会寻找方法将我正在编写的代码与依赖项分离。将注册表的读取与您想要测试的复杂性分开。

【讨论】:

【参考方案5】:

如果您要进行攻击,我会使用 reg 命令(详情如下)。如果您能告诉我们您使用的是哪种语言,我们可以提供特定语言的代码。

C:>reg /?

REG操作【参数列表】

操作[查询|添加 |删除 |复制 | 保存 |加载 |卸载 |恢复 | 比较 |出口 |进口 |旗帜]

返回码:(REG COMPARE 除外)

0 - 成功 1 - 失败

有关特定操作类型的帮助:

注册添加/? 注册删除/? [截图]

【讨论】:

以上是关于以编程方式将 .reg 文件合并到 win32 注册表中的主要内容,如果未能解决你的问题,请参考以下文章

Win 10中使用图片查看器

以编程方式编辑Local_Machine RegistryKeys(C#)

以编程方式将两个 exe 文件合并为一个

如何将 Win32 合并到 SDL 项目中?

以编程方式将具有写入权限的 IIS_IUSRS 添加到目录

以编程方式利用 Eclipse 的合并和差异查看器