我现在对函数RegQueryInfoKey感到困惑。谁能帮我一把?
在这个函数中,有一个名为“lpClass”的参数,在MSDN中,它被声明为“指向接收用户定义的键类的缓冲区的指针”。它也可以为null,但我真的想知道这个参数的用法。
1.如何为此功能定义“用户定义的类”以及何时应该执行此操作?
2.如何通过使用regedit.exe查看指定的密钥而不是调用函数来获取这些参数的值 - “lpcMaxSubKeyLen”,“lpcMaxValueNameLen”和“lpcMaxValueLen”?
您的任何答案将不胜感激。感谢
答案 0 :(得分:3)
该类是一个带有no real meaning的字符串,并且设置它是没有意义的(任何其他API都不使用它)。只有不到1%的密钥设置它,设置它时通常只是一个字符串,如“Shell”或“Setup”,甚至字符串“class”。
这些信息在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哈希的值)