我最近一直在研究一个非常好的注册表编辑器。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#中显示了一个例子,它可以帮助你。祝你好运! –