我要求使用WinApi来操作注册表,我想把HKEY_LOCAL_MACHINE\SOFTWARE\Test下的所有子键及内容复制到HKEY_CURRENT_USER\SOFTWARE\Test,尝试使用 SHCopyKey(HKEY_LOCAL_MACHINE,PChar('SOFTWARE\Test'),HKEY_CURRENT_USER, 0);并不成功,
请教各位应该如何写,如有类似例程不胜感激。
请教各位应该如何写,如有类似例程不胜感激。
解决方案 »
- 有人知道TDragDrop这控件哪里有下载不 ?
- ???怎么增加可用分阿????(看看我的给分你就知道为什么了...)
- 请问怎么可以得到一个日期差?
- 使用TMidiaPlayer控件,如何通过拖放Trackbar来控制播放的位置!
- 大家帮忙看看!入门问题!!马上给分!!
- 我用了一个OCX控件,在有的机器上调试没问题,但有的机器上就会出现 :vaild object expected as an argument.请问怎么解决?
- 请问怎样作屏幕保护程序?
- 关于hide窗口,autosize控件和quickrep打横A4纸的三个简单问题!
- 如何用CREATE TABLE 创建一个DBASE表??
- !!!!!哪儿有Delphi网络编程的书籍下载呀?最好是PDF的!!!!!100分购买!
- 老Delphi编写的程序转向Delphi2009的一个经验!
- listview中如何对指定的位置加入内容
ShowMessage('y')
else
ShowMessage('n');
没有相关示例,自己摸索了半天,终于成功了,原来是在调用SHCopyKeyA前要用RegCreateKey或RegOpenKey先打开注册表项,如下代码经测试成功,贴出来以资后人。
function RegCopyKey_BySHCopyKey(hkeySrc: HKEY; szSrcSubKey: string; hkeyDest: HKEY;
szDestSubKey: String; RecurseSubKeys:Boolean = True) : Boolean;
var
hReg: HKEY;
begin
if RegCreateKey(hkeyDest, PChar(szDestSubKey), hReg) = ERROR_SUCCESS then
begin
Result := SHCopyKey(hkeySrc, PChar(szSrcSubKey), hReg, 0) = ERROR_SUCCESS;
RegCloseKey(hReg);
end;
end;
//调用
RegCopyKey_BySHCopyKey(HKLM, 'SOFTWARE\Test', HKCU, 'SOFTWARE\Test', True);
//调用
RegCopyKey_BySHCopyKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\Test', HKEY_CURRENT_USER, 'SOFTWARE\Test', True);
RegCopyKey_BySHCopyKey(HKLM, 'SOFTWARE\Test', HKCU, 'SOFTWARE\Test', True);
以下是支持的:
RegCopyKey_BySHCopyKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\Test', HKEY_CURRENT_USER, 'SOFTWARE\Test', True);我上面的帖子中已声明我的平台是win2003 + sp2
SHCopyKey(HKEY_LOCAL_MACHINE,PChar('SOFTWARE\Test'),HKEY_CURRENT_USER, 0); 结果并不成功,正确的方法请看我前面的回复...
结贴..