答案1
不完全是,但在某些情况下我们可以做出很好的猜测。
Process Monitor 中的操作RegQueryValue
本质上对应于RegQueryValueEx
正在调用的函数。该函数有一个名为的参数lpType
,但它...
指向变量的指针收到指示存储在指定值中的数据类型的代码。
重点是我。它的存在是为了让应用程序知道它们得到的值的类型。(RegQueryValueEx
不关心数据类型,它只是传递字节。解释字节是程序的工作。)即使程序由于某种原因指定了类型,进程监视器也不会在函数进入时报告该值,只会在成功退出时报告。
但是,它确实报告了“长度”。由于不清楚的原因,这实际上并不是lpcbData
应用程序提供的用于指定其结果缓冲区大小的值——在 64 位系统上,您需要减去 12 才能得到原始值。DWord 值占用 4 个字节,QWord 值占用 8 个字节,所有其他类型的值都是可变长度。(程序在调用函数之前可能根本不准备内存,只是为了检查该值是否存在。)因此,如果 Process Monitor 报告的“长度”为 16,则程序需要 4 字节的数据块,这几乎肯定是 DWord。