我正在查看DuplicateHandle的文档前几天注意到DuplicateHandle能够复制注册表项句柄(HKEYs)。在SysInternals书中多读一点似乎表明注册表项句柄是普通的内核对象,类似于文件句柄。然而CloseHandle无法关闭HKEY和RegCloseKey不能关闭其他种类的内核对象。为什么要区分? 最佳答案 这是因为只有注册表的一部分功能是在内核中实现的。它包括使用本地注册表项的基本操作(创建、删除、读取、写入等)。其余功能在advapi32.dll中实现,工作在用户态:使用RegConnectRegist
我正在查看DuplicateHandle的文档前几天注意到DuplicateHandle能够复制注册表项句柄(HKEYs)。在SysInternals书中多读一点似乎表明注册表项句柄是普通的内核对象,类似于文件句柄。然而CloseHandle无法关闭HKEY和RegCloseKey不能关闭其他种类的内核对象。为什么要区分? 最佳答案 这是因为只有注册表的一部分功能是在内核中实现的。它包括使用本地注册表项的基本操作(创建、删除、读取、写入等)。其余功能在advapi32.dll中实现,工作在用户态:使用RegConnectRegist
在Windows中,如果在HKEY超出范围之前不调用RegCloseKey,则打开的HKEY变量会发生什么情况?当应用程序关闭时,我没有看到任何错误或警告,也没有看到任何内存泄漏。MSDNdoesn'toffermuchhelp,但听起来好像它以某种方式耗尽了资源。有谁知道实际发生了什么? 最佳答案 您孤立了一个句柄,这是一个有限的(好吧,这是一个相当大的限制)资源。但是,一旦您的应用程序终止,操作系统最终会释放句柄,因此浪费的资源最终会返回到池中。但是,分配有限制的东西并且在使用完后不释放它是一种糟糕的编程习惯。