为什么RegCloseKey存在(当CloseHandle似乎执行相同的功能时)
Why does RegCloseKey exist (when CloseHandle seems to perform the same function)?
前几天我查看了DuplicateHandle
的文档,注意到DuplicateHandle能够复制注册表项句柄(HKEY
s)。在SysInternals的书中读到更多这方面的内容似乎表明注册表项句柄是普通的内核对象,类似于文件句柄。然而,CloseHandle
不能关闭HKEY
s,RegCloseKey
不能关闭其他类型的内核对象。
为什么有区别?
这是因为只有注册表的一部分功能在内核中实现。它包括使用本地注册表项的基本操作(创建、删除、读取、写入等)。
其余功能在advapi32.dll中实现,并在用户模式下工作:
- 使用
RegConnectRegistry
访问远程注册表 - 访问
HKEY_PERFORMANCE_DATA
- 将Win32注册表表示转换为本机表示
- WOW64在64位系统上的注册表重定向(适用于32位应用程序)
功能的内核部分可通过本机API获得:NtCreateKey
、NtOpenKey
等。当将这些函数与Win32 API进行比较时,可以看出本机API使用的是"经典"HANDLE描述符,而不是HKEY。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- QML按钮点击功能执行顺序
- 如何用共享库替换可执行C++程序的功能?
- 当再次触发信号时,从Qt插槽执行的功能被第二次调用时会发生什么?
- 是否有一个Windows驱动程序函数可以执行Windows文件api SeFileAttributes的等效功能
- 如何使用C++在sqlite3数据库中执行写文件功能
- "no main"用于C++中链接或执行的功能
- 维护/维持两个代码集的风险,一个用于 CPU,一个用于 GPU,需要执行非常相似的功能
- 是否有用于执行反向字符串拆分器的开箱即用功能?
- 线程功能之一不执行可能的比赛条件
- C 程序如果功能中的语句不执行.在逻辑上似乎是错误的
- 无法从Linux,C ++执行"my_script" python脚本"main(filename)"功能;pModule = PyImport_Import(pName);返回空值
- 为什么要以相反的顺序执行RUST功能和FFI C 功能
- 如何与 PlaySound 同时执行其他功能?
- 在C 功能执行后,使用GCHANDLE CRALSES将大型结构从C#Unity脚本传递到C DLL
- 我正在尝试执行tranpose功能,但无法获得
- 有没有办法获得功能大小并分配内存以复制和执行
- 功能执行时间很奇怪
- 在Visual Studio Enterprise 2017(C )中测量功能执行时间
- QProgresDialog:忙碌的等待栏在功能执行时没有移动