c++ - 设置无效值后,注册表项是否会采用默认值

标签 c++ winapi

我正在设置具有无效值的注册表项(使用 REG_SZ 设置 REG_DWORD 键值)。注册表会保留它之前拥有的值还是会将其重置为默认值?

例如。我已设置 REG_DWORD 键并将其设置为值“4”。此键的默认值为“2”。现在,当我尝试使用具有无效 REG_SZ 值的 api“RegSetValueEx(...)”设置此键时。设置成功。现在,如果我得到这个键值,它会是默认值“2”还是之前设置的值“4”??

最佳答案

RegSetValueEx Sets the data and type of a specified value under a registry key.

它只会将存储值的类型更改为 REG_SZ 并设置您指定的值,它不会检查之前存在的值或类型。因此,当您读取该值时,您将获得您在那里设置的最后一个值。不存在“无效”REG_SZ 这样的东西。

也忘记“键的默认值”。这不是你想的那样。这不是 API 在出现故障时返回的值,它只是匿名值的别致名称。

关于c++ - 设置无效值后,注册表项是否会采用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076340/

相关文章:

c++ - 为什么从 std::istream 读取记录结构字段失败,我该如何解决?

c++ - 宏 ((void(*)())0)() 是什么意思?

winapi - SetTimer 与 CWnd::SetTimer

c - LCC-- 如何阻止调试器在应用程序启动时中断?

c++ - 什么可能导致两个相同的后续 SetWindowPos() 调用设置不同的窗口大小?

c++ - 在 MFC 中更改按钮的光标

c++ - pthread_once() 中的竞争条件?

c++ - 将 'this' 指针传递给 SetWindowsHookEx 的 MouseProc

c++ - 为什么我不能用两个参数重载 C++ operator[]?

c++ - 手动登录