有关函数RegQueryInfoKey的详细信息?

问题描述:

现在我完全被函数RegQueryInfoKey弄糊涂了。任何人都可以帮我一把吗?有关函数RegQueryInfoKey的详细信息?

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

1.如何为此功能定义一个“用户定义的类”,以及何时应该这样做?

2.How我能得到的值,这些参数 - “lpcMaxSubKeyLen”,“lpcMaxValueNameLen”和“lpcMaxValueLen”只需在指定关键看使用REGEDIT.EXE,而不是调用函数?

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

  1. 的类是与no real meaning的字符串,并设置它是没有意义的(它不使用任何其他API)。少于1%的键设置了它,当它被设置时,它通常只是一个字符串,如“Shell”或“Setup”,甚至字符串“class”。

  2. 这些信息在regedit中并没有真正的用处,如果他们想在枚举子条目之前分配内存,应用程序会使用它(但这里存在线程问题,因此您应该始终准备好分配更大的缓冲区所需的)

+0

谢谢安德斯,你帮了很多忙 – ericchan1336 2011-12-27 00:20:49

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

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散列)

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