Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用windows API将注册表文件导入注册表_C++_C_Windows_Registry - Fatal编程技术网

C++ 使用windows API将注册表文件导入注册表

C++ 使用windows API将注册表文件导入注册表,c++,c,windows,registry,C++,C,Windows,Registry,我正在尝试编写一些C/C++代码,将.reg文件导入注册表。MSDN具有为特定密钥导入文件的功能,但我想导入整个HKCU配置单元。没有Win32 API可将.reg文件导入注册表1。您必须自己解析文件,并根据需要将指令转换为适当的注册表API函数调用-Reg(Open | Create)KeyEx(),RegSetValueEx(),RegDelete(Key | Value)()等 1:不要被RegLoadKey()、RegReplaceKey()和RegRestoreKey()的存在所迷惑。

我正在尝试编写一些C/C++代码,将.reg文件导入注册表。MSDN具有为特定密钥导入文件的功能,但我想导入整个HKCU配置单元。

没有Win32 API可将
.reg
文件导入注册表1。您必须自己解析文件,并根据需要将指令转换为适当的注册表API函数调用-
Reg(Open | Create)KeyEx()
RegSetValueEx()
RegDelete(Key | Value)(
)等

1:不要被
RegLoadKey()
RegReplaceKey()
RegRestoreKey()
的存在所迷惑。它们用于加载由
RegSaveKey/Ex()
创建的文件,这些文件不是基于文本的
.reg
文件


否则,您可以只使用
ShellExecute/Ex()
CreateProcess()
执行
regedit.exe/s
,或使用
.reg
文件的路径作为命令行参数,让
regedit
/
reg
为您处理导入。这将是最简单的方法。

如果要生成外部工具,还可以使用带有
/import
开关的
reg.exe
。值得注意的是,
reg.exe
不需要管理员权限,除非注册表操作需要管理员权限,而
regedit.exe
被标记为始终提升。@BenVoigt谢谢,我已经更新了我的答案“我想导入整个HKCU配置单元”,这会导致灾难。每个用户注册表的重要部分在创建用户配置文件时采用永久值,不应被覆盖。您可以谈论备份和恢复操作,但不能谈论“导入”。