2010-04-28 4 views
12

일부 레지스트리 키를 수정하는 빠른 응용 프로그램을 작성하려고합니다. RegEdit을 통해 탐색 할 때 문제없이 키를 수정하고 삭제할 수 있습니다.DeleteSubKey UnauthorizedAccessException

하지만 RegistryKey.DeleteSubKey()을 사용하려고 시도하면 UnauthorizedAccessException이 표시됩니다.

이렇게 할 수있는 권한이 있습니까? 또한 내 사용자 계정에 변경 사항을 적용 할 수있는 권한이있는 경우 문제가 발생하는 이유는 무엇입니까?

편집 :

여기에 몇 가지 코드

RegistryKey reg; 

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

의 WinForm 또는 웹 응용 프로그램을? – curtisk

+1

그리고 삭제하기 전에 열쇠를 여는 방법은 무엇입니까? deletesubkey를 호출하기 전에 몇 줄의 코드를 표시 할 수 있습니까? – curtisk

+0

curtisk가 열려있는 것처럼 핸들이 열려 있거나 키 값이 비어 있지 않은 경우 하위 키를 삭제하려고하면 거부 될 수 있습니다 ... – 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); ** –

관련 문제