VB.net注册表DWord

时间:2013-10-11 19:36:43

标签: vb.net winforms registry

我可以写入注册表而没有任何问题。我的问题是,我想补充一下:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.8]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.12]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.SheetMacroEnabled.12]
"BrowserFlags"=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.SheetBinaryMacroEnabled.12]
"BrowserFlags"=dword:80000A00

到注册表。 vb.net中的DWord值,当我将它们转换为Longs或Decimal时,表示存在类型不匹配。 十进制值为:2147486208。这是10个字符长。如果删除8,它会将相应的十六进制值添加到注册表中,但再次添加8会引发超出范围的异常。

我做错了什么?

编辑:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim regKey As RegistryKey
    regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Classes\Excel.SheetMacroEnabled.12", True)
    regKey.SetValue("BrowserFlags", 2147486208, RegistryValueKind.DWord)
    regKey.Close()
End Sub

返回:

The type of the value object did not match the specified RegistryValueKind or the object could not be properly converted.

1 个答案:

答案 0 :(得分:2)

将常量作为十六进制文字传递,如下所示:

regKey.SetValue("BrowserFlags", &H80000A00, RegistryValueKind.DWord)