MSDN文档似乎对RegCreateKeyEx是否在失败时更新其最后第二个参数引用的句柄的值保持沉默。我的测试只显示它不更新这个,也就是说,在调用、传递和h之前,我设置了H=0来调用RegCreateKeyEx,以打开一个不存在的密钥,并在调用之后看到H=0。有人知道在什么情况下会改变手柄吗?
最佳答案
因为它没有定义所以没有记录。检查返回值——这就是它的作用。
即使它可以在你的特定版本的Windows上工作,一些未来的版本可以自由地做任何它想做的事情。依赖于这种未指定行为的程序被破坏——句号。
只要检查返回值并在出现错误时忽略HKEY——这是使用RegCreateKeyEx的唯一正确方法。