В настоящее время я создаю обозреватель реестра, главным образом потому, что я хочу поддерживать некоторые более совершенные операции поиска.Как «найти все» и регулярные выражения.Одна проблема, с которой я сталкиваюсь, заключается в том, что некоторые ключи выдают исключение безопасности при открытии.Я пытался запустить приложение с правами администратора, моя учетная запись пользователя также является администратором.Я встроил манифест с привилегиями "requireAdministrator".Я также попытался установить для параметров безопасности ClickOnce значение «Полное доверие», что несовместимо с requireAdministrator, или, как мне подсказывает Visual Studio .... Ничто не помогает избежать этого исключения.
Я просто хотел бы повторитьпо всем ключам.Я не хочу добавлять / удалять ключи.Если пользователь желает удалить ключ и не имеет разрешения на это, он отобразит сообщение об ошибке.Я просто хочу иметь возможность иметь неограниченный доступ для чтения.Это возможно?
FTR: я нахожусь на Win7 x64 и использую Vs2010u, и проект написан на C # на .net 4.0.Если regedit способен читать все ключи, даже если он не позволяет редактировать некоторые из них.Казалось бы уместно, что мы тоже можем сделать приложение, чтобы сделать то же самое.Хотя я нахожу это очень трудным, и, похоже, никакой реальной помощи на www нет.Только ссылки-кружки, ууу.
[РЕДАКТИРОВАТЬ]
Вот код, который читает ключи:
private void IterateSubKeys(RegistryKeyModel key) {
var subKeys = key.Key.GetSubKeyNames();
var values = key.Key.GetValueNames();
foreach (var valuename in values) {
try {
var valueKind = key.Key.GetValueKind(valuename);
var value = key.Key.GetValue(valuename);
key.Values.Add(new RegistryValueModel(valuename, value, valueKind));
}
catch { }
}
foreach (var keyname in subKeys) {
try {
var subkey = key.Key.OpenSubKey(
keyname,
RegistryKeyPermissionCheck.ReadSubTree,
RegistryRights.ReadKey);
key.SubKeys.Add(new RegistryKeyModel(subkey));
}
catch { Console.WriteLine("Error reading key: {0}", keyname); }
}
}