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

问题描述:

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

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

可以使用.reg文件删除注册表项,尽管我不确定它是如何记录的。具体方法如下:

REGEDIT4 

[-HKEY_CURRENT_USER\Software\<otherpath>] 

-在关键的名称前会告诉你要删除的关键Regedit

要静默运行此,类型:

regedit /s "myfile.reg" 

我看着它被检查出我的文件关联。

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

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

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

+0

你什么意思通过做“如果注释是‘开放’”约翰尼·马西斯? – 2015-01-21 22:51:19

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

当我发现自己问这样的问题时,我寻找方法来解耦我写的依赖关系的代码。从你想测试的复杂性中分离出注册表的阅读内容。

如果你在使用shell命令,我会使用reg命令(详情如下)。如果您可以告诉我们您正在使用哪种语言,我们可以提供语言特定的代码。

C:> reg /?

REG运行[参数列表]

操作[QUERY | ADD |删除| COPY | SAVE | LOAD |卸载|恢复| COMPARE |出口| IMPORT | FLAGS]

返回代码:(除了REG COMPARE)

0 - 成功 1 - 无法

如要了解具体的操作类型:

REG ADD /? REG DELETE /? [剪断]