2013-10-11 108 views
0

我可以寫入註冊表,完全沒有問題。我的問題是,我試圖補充:VB.net註冊表DWord

[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 

到註冊表。 DWORD值在vb.net中,當我將它們轉換爲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. 
+0

*我在做什麼錯*問這樣一個問題?這並否認我們看到你的代碼。 –

+0

請再檢查一次。 –

回答

2

傳遞常量,十六進制文字,像這樣:

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

非常感謝。這工作。 –