(PUP-3837) Allocate smaller registry value buffers
- Previously, a 32k character buffer would be allocated up front for each registry value read through RegEnumValueW. This is a very wasteful operation when using UTF-16LE as this allocates 64k memory per read, which could be 1000x more memory than necessary per read. Instead use the RegQueryInfoKey API call, which requires only 2 DWORD allocations up front to store the maximum size values, that can be used when calling RegEnumKeyW and RegEnumValueW.