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 としてキャストすると、型の不一致があると表示されます。10 進値は 2147486208 です。これは 10 文字です。8 を削除すると、適切な 16 進数値がレジストリに追加されますが、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

次のように、定数を 16 進リテラルとして渡します。

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