2012-02-18 112 views
0

我試圖刪除註冊表項,到目前爲止,我試過了代碼,這似乎是正常的:問題刪除註冊表項

 RegistryKey delete = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"); 
     delete.DeleteSubKeyTree("MyPaintApp"); 
     delete.Close(); 

但我得到的錯誤:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. 

我搜索我的問題,並搜索stackoverflow和應用一些解決方案,但似乎都使用我使用的相同的方法,所以我厭倦了,我希望你能幫助我。

編輯:SORRY我使用CurrentUser而不是LocalMachine在我的registryKey路徑,這是問題。

+1

'delete' null?拋出一個斷言,或使用調試器。 – CodesInChaos 2012-02-18 18:23:16

+0

除了當前的null異常,您應該在修改密鑰時使用'OpenSubKey(key,true)'。 http://msdn.microsoft.com/en-us/library/xthy8s8d.aspx – 2012-02-18 18:24:29

+0

爲什麼在問一個問題之前,你只是閱讀你正在使用的函數的文檔? – CodesInChaos 2012-02-18 18:30:29

回答

1

OpenSubKey狀態的文檔:

返回值
類型:Microsoft.Win32.RegistryKey
請求的子項,或NULL,如果操作失敗。

因此打開鑰匙似乎失敗了。很可能是因爲它不存在:

如果找不到指定的子項,則返回null。

在我的Win7 comp上,Image File Execution Options子項不存在。


但即使您修復該部分,它仍然會失敗。您正在使用的OpenSubKey的過載記錄爲:

以只讀方式檢索子項。

所以你應該使用OpenSubKey(path,true),就像@lasseespeholt推薦。

http://msdn.microsoft.com/en-us/library/z9f66s0a.aspx