如何在c++builder中将注册表导出到*.reg文件
How in c++ builder export registry to *.reg file?
我使用reg->SaveKey("软件","D:\1.reg")。但得到的是空文件,没有数据。
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TRegistry *reg=new TRegistry(KEY_READ);
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKey("Software",0);;
reg->SaveKey("Software","D:\1.reg");
delete reg;
}
SaveKey
是RegSaveKey()
的松散包装,其文档声明:
调用进程必须启用
SE_BACKUP_NAME
权限。有关详细信息,请参阅使用特殊权限跑步。
用户令牌通常不启用SE_BACKUP_NAME
权限。为了满足这一要求,您需要:
- 以管理员身份运行
- 将
SE_BACKUP_NAME
权限添加到您的用户令牌中
您必须遵守的另一个要求是,在调用SaveKey
之前,输出文件必须不存在。
有关说明该方法的C++代码,请参阅这篇EDN文章。
下一个变体成功了!
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TRegistry *reg=new TRegistry(KEY_READ);
HANDLE ProcessToken;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &ProcessToken))
{
SetPrivilege(ProcessToken, SE_BACKUP_NAME, TRUE);
TRegistry *reg=new TRegistry(KEY_READ);
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->SaveKey("Software","D:\1.reg");
delete reg;
}
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 将文件的数据从服务器返回到客户端 - reg
- C++将.reg文件提取到注册表
- 如何在c++builder中将注册表导出到*.reg文件
- Reg 文件 - "dword"转换为什么?