2012-09-06 4 views
1

I가 사용하는 레지스트리 액세스를 요구하는 기존 프로그램 :C# 읽기 레지스트리 윈도우 8

RegistryPermission permission = new RegistryPermission(RegistryPermissionAccess.AllAccess, strCheckPermission); 
permission.Demand(); 

이 Windows 7 및 Windows Server 2003 및 그러나 2008 년까지 Windows XP 용 잘 작동, 내가 실행할 때 나는이 권한 세트를 요구할 때이 윈도우 8에, 난 여전히 하위 키

를 만들 수 없습니다
Registry.LocalMachine.OpenSubKey("Software", true).CreateSubKey("myCompany") 

사람이 여기에 잘못 무슨 일이 일어나고 있는지 알고 있나요?

업데이트 : 예외의 스택 트레이스 :

System.UnauthorizedAccessException: Cannot write to the registry key. 
    at Microsoft.Win32.RegistryKey.EnsureWriteable() 
    at Microsoft.Win32.RegistryKey.CreateSubKey(String subkey, RegistryKeyPermissionCheck permissionCheck, RegistrySecurity registrySecurity) 
+0

예외가 있습니까? 그렇다면 전체 내용을 게시하십시오. – Polyfun

+2

사용자는 해당 레지스트리 하이브에 액세스 할 수있는 권한이 있어야합니다. Windows 8에서 코드를 실행하는 데 아무런 문제가 없었습니다. –

+0

@Ramhound가 무엇을 말했는지 확인하기 위해 Windows 8에서도이 문제를 해결할 수 있습니다. Visual Studio를 관리자로 실행하고 디버깅을 시도하십시오. – JMK

답변

3

당신은 윈도우 권한으로 코드 액세스 보안 권한을 혼합한다. CAS는 레지스트리 키에 대한 액세스 권한을 부여하기 위해 아무 것도하지 않으며 권한이 비활성화되지 않았 음을 확인하기 만합니다. 드물게, 대부분의 .NET 응용 프로그램은 완전히 신뢰합니다.

이것은 윈도우 액세스 권한 문제입니다. 사용자 계정에는 단순히 키 쓰기 권한이 없습니다. 일반적이지 않은 HKLM 키는 UAC 권한만으로 작성 될 수 있습니다. 해발 고도를 묻기 위해 매니페스트를 삽입해야하며 자세한 내용은 this answer을 확인하십시오.

더 자세한 Windows 8의 세부 사항은 WinRT입니다. "Windows Store"앱은 절대로 그러한 키를 작성할 수 없으며 이에 대한 해결 방법은 없습니다.

+0

안녕하세요 한스, 감사합니다. 너의 anser,이 말이. 나는 UAC를 완전히 없앴다. 그러나 Windows 8은 언젠가 UAC에 대해 언젠가 불평하고있다. (또는 관리자인데도 "관리자 권한이 있어야한다."나는이 문제와 관련이 있다고 생각한다. 그런데 ClickOnce 응용 프로그램을 사용하고 있습니다. –

+0

Windows 8에서 UAC를 해제 할 수 없으며 Windows Store 응용 프로그램 용 샌드 박싱을 구현하는 데 사용됩니다. ClickOnce 앱은 ** 결코 ** HKLM 키로 엉망이되어서는 안됩니다 ** –

+0

아마 UAC를 완전히 끌 수는 없지만 UAC를 "절대로 알리지 않을 것"으로 바꿨습니다. 나는 UAC가 켜져서 일할 수 없다 - 나를 미치게 만든다. –

관련 문제