有关函数RegQueryInfoKey的详细信息?

时间:2011-12-26 11:36:13

标签: api winapi registry

我现在对函数RegQueryInfoKey感到困惑。谁能帮我一把?

在这个函数中,有一个名为“lpClass”的参数,在MSDN中,它被声明为“指向接收用户定义的键类的缓冲区的指针”。它也可以为null,但我真的想知道这个参数的用法。

1.如何为此功能定义“用户定义的类”以及何时应该执行此操作?

2.如何通过使用regedit.exe查看指定的密钥而不是调用函数来获取这些参数的值 - “lpcMaxSubKeyLen”,“lpcMaxValueNameLen”和“lpcMaxValueLen”?

您的任何答案将不胜感激。感谢

2 个答案:

答案 0 :(得分:3)

  1. 该类是一个带有no real meaning的字符串,并且设置它是没有意义的(任何其他API都不使用它)。只有不到1%的密钥设置它,设置它时通常只是一个字符串,如“Shell”或“Setup”,甚至字符串“class”。

  2. 这些信息在regedit中并不真正有用,如果他们想在枚举子条目之前分配内存,它会被应用程序使用(但是这里存在一个线程问题,所以你应该总是准备分配一个更大的缓冲区如果需要)

答案 1 :(得分:1)

有一个严重的例外:Class参数与键

一起使用
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Data
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\GBG
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\JD
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Skew1

形成Syskey(用于编码用户密码的NT哈希的值)

参考:http://moyix.blogspot.jp/2008/02/syskey-and-sam.html