Во-первых, извинения, если это дубликат - я не могу поверить, что мне нужно задать этот вопрос первым, но я просто не могу найти существующий ответ (здесь или в Google).
Я пытаюсь прочитать значение записи в реестре, используя следующий код VB. Net (простите за любое шонкое форматирование и магический номер c; это всего лишь быстрый и грязный тестовый код):
Module modMain
Private Const REG_KEY As String = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters"
Private Const REG_VALUE As String = "FileSizeLimitInBytes"
Sub Main()
Dim strReturn As String = ""
Dim lngNumBytes As Long = 0
strReturn = My.Computer.Registry.GetValue(REG_KEY, REG_VALUE, "-99")
Console.WriteLine("Bytes: " & strReturn.ToString())
Console.WriteLine("Current registry value: " & (CDbl(strReturn) / 1048576).ToString() & " (MB)")
Console.ReadKey()
End Sub
End Module
Вывод выглядит следующим образом:
Байт: -1
Текущее значение реестра: -9.5367431640625E-07 (МБ)
Я попытался получить значение DWORD для других записей в этом ключе, и все они возвращаются правильно. Единственное отличие состоит в том, что значение в этом случае очень большое: 4 294 967 295 (остальные значения DWORD находятся в диапазоне от 0 до 1 000 000). Я пытался использовать различные типы данных, чтобы принять возвращаемое значение (Int64, Int32, Double, Long и Object), но все они либо полностью отказывают, либо возвращают -1.
Что я делаю неправильно?
Спасибо.