我最近一直在研究一個非常好的註冊表編輯器。C#WPF - 即使使用管理員權限,也不允許註冊表訪問?
然而,某些註冊表項,下面的註冊表編輯器中指出,在我的程序不會出現,因爲他們提出的權限不足的錯誤時打開,因此被錯誤處理捕獲並跳過:
註冊表編輯器:
我的程序:
正如您所看到的,即使我使用管理員權限運行程序,SECURITY鍵也會丟失,並且SAM鍵不可擴展。
這顯然可以通過製作假鑰匙並將它們放在那裏,併爲它們顯示一個空的默認值來解決,但這不是一個具體的解決方案,只是讓用戶看起來像是問題解決了。
我想知道是否有辦法以具體的方式解決問題,換句話說,接收註冊表訪問這些密鑰?
它們顯示的所有內容都是空的默認值,包括可擴展的SAM鍵 - 它只是一個名爲'SAM'的子鍵,其默認值爲空。
但是,對於用戶來說,如果程序完全按照Regedit顯示,則會更好,因爲這意味着它是一個功能完整的軟件。
感謝您的幫助。
編輯(包括代碼):
public static void TreeViewItemExpanded(TreeViewItem sender)
{
if (sender.Items[0] is string)
{
sender.Items.Clear();
RegistryKey expandedKey = (RegistryKey)sender.Tag;
foreach (string key in expandedKey.GetSubKeyNames().OrderBy(x => x)) try { sender.Items.Add(CreateTreeViewItem(expandedKey.OpenSubKey(key))); } catch { }
}
}
private static TreeViewItem CreateTreeViewItem(RegistryKey key)
{
TreeViewItem treeViewItem = new TreeViewItem() { Header = new RegistryEditor_RegistryStructure_TreeView() { Name = Path.GetFileName(key.ToString()) }, Tag = key };
try { if (key.SubKeyCount > 0) treeViewItem.Items.Add("Loading..."); } catch { }
return treeViewItem;
}
我已經編輯過,以包含每次鍵展開和創建時使用的代碼。 我正在使用RegistryKey.OpenSubKey(子鍵) 如何使用RegCreateKeyEx? – Aleksbgbg
@Aleksbgbg我添加了更多的鏈接,這些鏈接解釋瞭如何在.NET中處理Registry Security。第三個鏈接在C#中顯示了一個例子,它可以幫助你。祝你好運! –