关于注册表操作的问题 2C
if (ERROR_SUCCESS != (ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control", NULL, NULL, NULL, KEY_ALL_ACCESS, NULL, &hKEY, NULL))) {
    sprintf(errInf, "打开或创建 [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control] 失败! ret = %ld", ret);

#if 0
if (_OS_WIN7 == g_OsVer) strcat(errInf, "\nWindows 7 用户请以管理员权限运行。");
else if (_OS_WIN8 == g_OsVer) strcat(errInf, "\nWindows 8 用户请以管理员权限运行。");
else if (_OS_WIN10 == g_OsVer) strcat(errInf, "\nWindows 10 用户请以管理员权限运行。");
else if (_OS_WINTP == g_OsVer) strcat(errInf, "\nWindows 技术预览版 用户请以管理员权限运行。");
#endif
return FALSE;
}
::RegCloseKey(hKEY);
if (ERROR_SUCCESS != (ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\usbflags", NULL, NULL, NULL, KEY_ALL_ACCESS, NULL, &hKEY, NULL))) {
sprintf(errInf, "打开或创建 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags] 失败! ret = %ld", ret);
return FALSE;
}
::RegCloseKey(hKEY);

LPCTSTR StrKey = "SYSTEM\\CurrentControlSet\\Control\\usbflags";
ret = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, StrKey, NULL, KEY_READ|KEY_WRITE, &hKEY);
if (ERROR_SUCCESS != ret) {
    sprintf(errInf, "打开 [HKEY_LOCAL_MACHINE\\%s] 失败! ret = %ld", StrKey, ret);
    return FALSE;
}

问题:
(1)逐句解读功能和实现方法;
(2)前两段RegCloseKey具体作用是什么?为什么要释放你?
谢谢

2个回答

RegCreateKeyEx了就需要对应的RegCloseKey。这样每次都能正确释放资源。

cn8610000
Student_2017 那前两段这样做有什么目的呢?谢谢
接近 3 年之前 回复
 if (ERROR_SUCCESS != (ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control", NULL, NULL, NULL, KEY_ALL_ACCESS, NULL, &hKEY, NULL))) 
 {
    sprintf(errInf, "打开或创建 [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control] 失败! ret = %ld", ret);
    return FALSE;  
}
::RegCloseKey(hKEY);  //关闭 hKEY
if (ERROR_SUCCESS != (ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\usbflags", NULL, NULL, NULL, KEY_ALL_ACCESS, NULL, &hKEY, NULL)))
{
    sprintf(errInf, "打开或创建 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags] 失败! ret = %ld", ret);
    return FALSE;
}
::RegCloseKey(hKEY);   //关闭 hKEY

LPCTSTR StrKey = "SYSTEM\\CurrentControlSet\\Control\\usbflags";
ret = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, StrKey, NULL, KEY_READ|KEY_WRITE, &hKEY);
if (ERROR_SUCCESS != ret)
{
    sprintf(errInf, "打开 [HKEY_LOCAL_MACHINE\\%s] 失败! ret = %ld", StrKey, ret);
    return FALSE;
}
shen_wei
shen_wei 函数都了解,还要问功能??? 就是创建基本的注册表,打开注册表。。
接近 3 年之前 回复
cn8610000
Student_2017 函数的作用了解的,主要是每句的功能和作用,谢谢。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问