我可以写入注册表而没有任何问题。我的问题是,我想补充一下:
[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.
答案 0 :(得分:2)
将常量作为十六进制文字传递,如下所示:
regKey.SetValue("BrowserFlags", &H80000A00, RegistryValueKind.DWord)