2009-11-06 31 views
1

我不知道這裏發生了什麼......但Microsoft.Win32.Registry類正在返回各種奇怪的東西。當我說GetSubKeys時,它會返回一些在註冊表中沒有的東西(例如,我調用Registry.LocalMachine.OpenSubKey(「SOFTWARE」)。SubKeyCount並返回「81」...但只有30個鍵當我查看它使用註冊表編輯器)Windows 7 - C#Excel插件 - Registry.GetValue總是返回null

當我嘗試獲取它總是返回null的值的東西。

我已經通過註冊表並設置了各個鍵的權限給所有人:完全只是爲了測試,但還是沒有。

我錯過了什麼?我只是從Vista Ultimate機器升級到Windows7旗艦版...

??

回答

1

實際的答案:

Windows 64-bit registry v.s. 32-bit registry

,因爲我的筆記本電腦是64位和我的應用程序是32位......它一直在尋找下

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \公司CompanyX

+0

你應該接受這個作爲你的答案。這樣做你不會獲得任何聲望,但它會讓別人知道你有一個解決方案。 – 2009-11-06 21:30:20

0

由於您打開HKLM,因此如果您沒有以管理員身份運行,則必須要求只讀訪問權限。只是打開密鑰可能會或可能無法正常工作,因爲Windows無法確定您不想寫入密鑰。

更改權限不是解決方案,因爲它只是打開一個安全漏洞,MS自XP以來一直試圖關閉它(自願以非管理員身份運行)並強制自Vista發佈以來關閉(默認情況下是非管理員)。

請參閱this問題討論這個問題。它適用於Delphi,但包含一些您可能會覺得有用的信息和鏈接。

出於好奇,儘管...爲什麼Excel插件需要讀取或寫入HKLM?只有安裝程序應該寫入該配置單元,並且文件關聯存儲在HKCR或HKCU中。

+0

沒有寫作,只有閱讀。所以我不明白......即使我試着明確地說「我只是在讀這篇文章」......我仍然看不到註冊表中存在的密鑰。它不應該顯示「合併視圖」:http://msdn.microsoft.com/en-us/library/aa965884(VS.85).aspx – 2009-11-06 20:22:05