以编程方式将 .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 注册表中的主要内容,如果未能解决你的问题,请参考以下文章