2010-04-28 3 views
12

Я пытаюсь написать быстрое приложение, чтобы изменить некоторые ключи реестра. Когда я просматриваю через RegEdit, я могу без проблем изменять и удалять ключи.DeleteSubKey UnauthorizedAccessException

Но когда я пытаюсь использовать RegistryKey.DeleteSubKey(), он выбрасывает UnauthorizedAccessException.

Есть ли способ получить привилегии для этого? Кроме того, почему возникла проблема, если у моей учетной записи пользователя явно есть доступ для внесения изменений?

Edit:

Вот код

RegistryKey reg; 

try 
{ 
    reg = Registry.CurrentUser.OpenSubKey(BaseKey); 
    reg.DeleteSubKey("{" + Item.Guid.ToString() + "}"); 
} 
catch 
{ 
    return false; 
} 
+0

Winform или веб-приложение? – curtisk

+1

И как открыть ключ перед вызовом для удаления? Можете ли вы показать несколько строк кода, прежде чем вы вызовете deleteesubkey? – curtisk

+0

Вам может быть отказано при попытке удалить под-ключ, если у вас есть открытый дескриптор (как предлагается курсор), или, возможно, если ключ не пуст от значений ... – ewall

ответ

36

Попробуйте вместо этого, откройте его сначала в качестве чтения/записи, а не только для чтения:

RegistryKey reg; 

try 
{ 
    reg = Registry.CurrentUser.OpenSubKey(BaseKey, true); //<--over here! 
    reg.DeleteSubKey("{" + Item.Guid.ToString() + "}"); 
} 
catch 
{ 
    return false; 
} 
+2

* массивный привкус на лбу * - Спасибо! –

+1

Я забыл сделать это каждый раз. –

+1

Для пользователей Compact Framework попробуйте: ** reg = Registry.CurrentUser.OpenSubKey (@ "\", true); ** –

Смежные вопросы