0

我可以毫无问题地写入注册表。我的问题是,我正在尝试添加:

[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 值,当我将它们转换为 Long 或 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.
4

1 回答 1

2

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

regKey.SetValue("BrowserFlags", &H80000A00, RegistryValueKind.DWord)
于 2013-10-11T19:48:49.767 回答