2013-04-28 3 views
0

Я пытаюсь прочитать значение типа REG_RESOURCE_LIST из реестра, но безуспешно.
Особое значение, которое я пытаюсь читать, это HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\{YourNetworkInterface}\{GUID}\Control\AllocConfig.
Вы можете найти это значение, перейдя на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI и ищите ключ, в котором его подразделение (часть {GUID} в пути) имеет значение с именем Class со значением Net. Или вы можете просто найти его.Чтение значения REG_RESOURCE_LIST из реестра

Странная вещь, когда я открытие Control ключа через код, и вызов GetValueNames() Я получаю имя AllocConfig значение, но при вызове GetValue("AllocConfig") я получаю нуль (не нуль в действительности).
Кроме того, в ProccessMonitor я вижу, что при вызове GetValue("AllocConfig") результатом является Buffer Overflow.
Любая помощь будет оценена, спасибо.

+0

Вы используете 'Microsoft.Win32.Registry'? –

ответ

2

Чтобы получить REG_RESOURCE_LIST, вам необходимо использовать RegQueryValueEx(). Значение, которое вы должны ожидать в параметре lpType out, равно 8 (see here). Данные, которые вы получите обратно в параметре lpData из является CM_RESOURCE_LIST

Вызов RegQueryValueEx первым, чтобы получить размер списка, выделить буфер такого размера, вызовите ReqQueryValueEx для заполнения буфера, и привести указатель буфера PCM_RESOURCE_LIST , Документация CM_RESOURCE_LIST, приведенная выше, указывает вам, как перебирать список и извлекать содержимое.

Смежные вопросы