3
를 던져, IOExeption가 발생합니다 :RegistryKey.GetSubKeyNames는 IOException이
string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
RegistryKey key = Registry.LocalMachine.OpenSubKey(subKey);
string[] keys = key.GetSubKeyNames(); // throws IOException here
:
는 관련 코드 "더 이상 사용할 수있는 데이터가 없습니다" 사양여기
,
- Win7에 64
- VS 2010 SP1 "모든 CPU"의 빌드 타입을 사용하는 경우 예외가 발생합니다 .NET 3.5
subKey
문자열 변수에 명명 된 SubKey 경로 대신 "Wow6432Node"에서 키를 읽습니다. 문제는입니다 : 어떻게 64 비트 시스템 (안 Wow6432Node)에 위에서 정의 된 subKey
경로에있는 모든 하위 키를 읽을 수 있습니까?
참고 : 다른 64 비트 시스템에서 동일한 코드를 실행하면 오류없이 코드가 실행됩니다. 나는 어딘가에 손상된 레지스트리 키가 있다고 생각하는 경향이 거의 있습니까? 그렇다면 부패한 키를 어떻게 찾을 수 있는지에 대한 아이디어가 있습니까?
은'OpenBaseKey'는 4.0있어서 것으로 보인다. 나는 .NET 3.5를 진술해야했다. 그러나, 나는 4.0에서 OpenBaseKey를 사용하여 테스트를 실행했고 "더 이상 데이터를 사용할 수 없다"라는 동일한 예외가 발생했습니다. 이상한 점은 키 수를 얻을 수 있다는 것입니다. 키 이름의 열거는 아닙니다. –
그러면 보안 문제 인 것 같습니다.하지만 그냥 직감이 ... – Aliostad
전 시스템 관리자입니다. 나는 하위 키에 대한 모든 권한을 재설정하려고 시도했으나 하위 키에 권한을 상속 받았지만 "모든 키를 업데이트 할 수 없습니다"와 같은 오류로 실패했습니다. 200 개 이상의 하위 키가 있으며 수동으로 각각의 권한을 확인해야하는 것은 PITA가 될 것입니다. 나는 그들 중 1/10 정도를 직접 손으로 리셋했다. –