簡體   English   中英

如何允許我的 .NET 應用程序的注冊表(寫入)訪問?

[英]How to allow registry (write) access fo my .NET application?

我收到錯誤消息:

請求的注冊表訪問被拒絕

當嘗試在打開UAC的情況下寫入注冊表鍵時:

RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "")
tawkey.OpenSubKey(x, true).SetValue(X, V, RegistryValueKind.DWord)

我必須在我的軟件安裝期間運行“subinacl /subkeyreg HKEY_LOCAL_MACHINE\PathToMyKeys... /grant=user=f”嗎? 還是有其他方法可以訪問我的注冊表項?

謝謝你。

如果您希望寫入HKLM下的密鑰,則需要一個提升的進程。 這是通過在應用程序清單中將requestedExecutionLevel設置為requireAdministrator來實現的。

進行此更改意味着您的應用程序每次運行時都會顯示一個 UAC 提升對話框。 這無疑會讓人惱火,所以這里有一些避免這種刺激的選擇:

  1. 寫入標准用戶具有寫入權限的HLKM以外的地方。
  2. 在安裝程序中執行對HLKM的寫入。
  3. 如果僅在程序中偶爾使用的功能需要寫入HLKM ,請安排您按需提升。

選項 3 需要稍加闡述。 進程一旦啟動就無法提升。 您只能在流程開始時提升。 因此,為了實現選項 3,您需要該功能存在於單獨的進程中或進程外 COM 服務器中。 如果您沿着這條路線走 go,請記住在任何導致 UAC 對話框的 UI 元素上包含盾牌圖標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM