2011-10-15 155 views
1

我只是熟悉自己在VB中編輯註冊表。我在更改HKEY_LOCAL_MACHINE項中的值時遇到問題。當我在運行時改變一個值時,它總是假設我正在「Wow6432Node」鍵中,即使我沒有把它放在括號中。例如:My.Computer.Registry.SetValue(「HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced \ Folder \ Hidden \ SHOWALL」,「CheckedValue」,1)並且它不會更改上面字符串中的值,但將其更改爲在該字符串中放置了「HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced \ Folder \ Hidden \ SHOWALL」。使用VB編輯註冊表

程序以管理員身份運行。

回答

3

這就是所謂的registry redirection。在64位Windows中,一些註冊表項(包括HKLM \ Software)被重定向到32位應用程序。如果您將VB.NET項目的構建屬性更改爲x64,則會看到它寫入HKLM \ Software。您可以access the non-redirected keys using flags,但我相信這些只適用於非託管API。

但簡單的答案是你沒有做錯任何事,而且它應該如何工作。

+2

.NET 4中的RegistryKey.OpenBaseKey()方法提供了RegistryView參數的解決方法。 –

+0

謝謝大家所有的答覆=]哦,還有一件事。 64位操作系統有x86的權利?這是否意味着x86是64位操作系統,或者x64是64位操作系統。如果你明白我的意思=]。 – user959631

+0

64位Windows可以運行32位代碼。在這種情況下,x86指的是32位代碼和x64到64位代碼。 – shf301