2013-10-01 100 views
5

我已經搜索谷歌和這裏的答案現在一段時間,並得出結論,寫入註冊表時,HKEY_CURRENT_USER應該可用沒有UAC,正確?無論如何,每個線程似乎都是這樣。我的問題是,當試圖訪問此密鑰並寫入一個新值時,我遇到訪問被拒絕錯誤。這是由於我的註冊表有問題嗎?或者我做錯了什麼?以下是我正在使用的代碼:無法寫入HKEY_CURRENT_USER在C#中的註冊表項#

string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; 
RegistryKey startupKey = Registry.CurrentUser.OpenSubKey(runKey, true); 
startupKey.SetValue("Arebokerts application", '"' + Environment.CurrentDirectory +  "\\arebokert.exe" + '"', Microsoft.Win32.RegistryValueKind.String); 

有沒有人可以如此善待並闡明該主題?我想遠離任何一種UAC提示,並且能夠在沒有UAC特權的情況下運行它。這段代碼拋出一個「UnauthorizedAccessException」。哪裏不對?

最好的問候,arebokert

編輯

由於大衛和漢斯在評論中指出,這個問題是由於一些從改變密鑰阻擋我。我發現它是comodo antivirus,所以我把它關掉了。這使得應用程序功能正常。感謝您的回覆!

+0

管理員可以在每個單獨的密鑰上覆蓋訪問權限。這個名單將是最高的。運行regedit.exe,右鍵單擊密鑰Permissions。 –

+0

對於我來說,這恐怕不是一個可行的解決方案。此應用程序也將在我的其他電腦上運行,因此更改每臺電腦的權限不是一種選擇。感謝您的建議。 – arebokert

+0

@arebokert這不是漢斯所說的。漢斯表示,您的註冊表有可能被拒絕您的用戶權限來執行您正在嘗試的權限。在這種情況下,不要求其他解決方案會有所幫助。如果安全性拒絕你訪問,你不能繞過它。如果可以的話,它不會是這個安全的。 –

回答

5

您的代碼很好,默認情況下,標準用戶可以寫入HKCU。問題在於系統拒絕你寫入對註冊表部分的訪問。最有可能的解釋是:

  1. 在其上運行該代碼的機器已經有固定限制的寫訪問特定的密鑰。檢查註冊表是否屬於這種情況。導航到該鍵,右鍵單擊樹視圖中的鍵並選擇權限。選擇您的用戶名並查看您擁有的權限。您應該允許同時檢查完全控制和讀取。

  2. 您正在運行的防病毒或防惡意軟件產品阻止對該密鑰的寫入訪問。由於此密鑰被惡意軟件廣泛使用,反惡意軟件產品的反擊並不罕見。您可以通過臨時禁用所有防病毒或防惡意軟件產品來診斷這是否是原因。

+0

這是我的問題的解決方案。 Comodo antivirus阻止我寫入註冊表,當我關閉它時,寫入成功!非常感謝大衛! – arebokert

+0

噢,好的:p – Nyerguds