Я недавно работал над очень хорошим редактором реестра.C# WPF - Доступ к реестру не разрешен, даже с правами администратора?
Однако, некоторые ключи реестра, заостренные ниже в Regedit, не будет отображаться в моей программе, поскольку они поднимают ошибку недостаточных привилегий при открытии, и так пойманы обработки ошибок и пропущено:
Regedit :
Моя программа:
Как видите, ключ SECURITY отсутствует, а ключ SAM не расширяется, хотя я запускаю программу с правами администратора.
Возможно, это можно устранить, создав поддельные ключи и помещая их туда, и просто отображая для них пустое значение по умолчанию, однако это не конкретное решение, а просто способ заставить его казаться пользователю, как если бы он проблема решена.
Мне было интересно, есть ли способ исправить проблему конкретным способом или, другими словами, получить доступ к реестру к этим ключам?
Все, что они отображают, является пустым значением по умолчанию любым способом, включая расширяемый ключ SAM - он просто имеет подраздел с именем «SAM» с пустым значением по умолчанию.
Однако для пользователя гораздо лучше, если программа отображается точно так же, как в Regedit, так как это означает, что это полностью функциональная часть программного обеспечения.
Спасибо за помощь.
Edit (код включен):
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 Я добавил еще пару ссылок, в которых объясняется, как вы можете работать с Registry Security в .NET. Третья ссылка показывает пример на C#, который должен вам помочь. Удачи! –