首页 > 解决方案 > Windows 注册表 DWORD 在 GetValue 上返回 -1

问题描述

首先,如果这是重复的,我深表歉意——我不敢相信我是第一个需要问这个问题的人,但我找不到现有的答案(在这里或在谷歌上)。

我正在尝试使用以下 VB.Net 代码读取注册表项的值(请原谅任何不合理的格式和幻数;这只是快速而肮脏的测试代码):

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 (MB)

我尝试获取该键中其他条目的 DWORD 值,它们都正确返回。唯一的区别是本例中的值非常大:4,294,967,295(其他 DWORD 值介于 0 和 1,000,000 之间)。我尝试使用各种数据类型来接受返回值(Int64、Int32、Double、Long 和 Object),但它们要么完全失败,要么返回 -1。

我究竟做错了什么?

谢谢。

标签: vb.nettypeswindows-10registry

解决方案


推荐阅读