2015-01-08 5 views
0

Visual Studio 2005 및 C# (CF v2.0) 사용. 다음 코드는 Windows CE 6.0에서 레지스트리 키를 삭제합니다.Windows CE 5.0의 레지스트리 키 삭제

RegistryKey key_test = Registry.LocalMachine.CreateSubKey("Test"); 
RegistryKey key_users = key_test.CreateSubKey("Users"); 
key_users.DeleteSubKey("User1"); // Yes, this key does exist! 
key_users.Flush(); 
// Now power down the device; on power up, key is gone 

그러나 정확히 동일한 코드가 Windows CE 5.0에서 키를 삭제하지 못합니다. "DeleteSubKey"를 호출 한 다음 레지스트리를 수동으로 확인한 후에 키가 사라진 것처럼 보입니다. 하지만 장치의 전원을 다시 켜면 키가 반환되었습니다!

내가 운영 체제를 검색 할 수 있습니다, 그래서 다음 Windows CE 5.0에 대한 변화를 시도 :

key_users.DeleteSubKeyTree("User1"); // DeleteSubKey also fails 
key_users.Close(); 

을하지만,이 또한 키를 삭제하지 못했습니다. 다시 키가 보이지만 장치를 다시 켜면 키가 다시 돌아옵니다. try-catch 블록에 위의 코드를 캡슐화 했으므로 예외가 발생하지 않으며 코드가 정상적으로 실행되고 작동하지 않습니다. 어떤 아이디어? 내가 놓친 Windows CE 5.0에서 추가 작업을 수행해야합니까? 열쇠를 추가하는 것은 문제가되지 않습니다. 간단한 "Flush"가 열쇠를 추가합니다.

답변

1

ce5 장치에 영구적 인 레지스트리가없는 것 같습니다. 키를 만들려고 했습니까? 다시 부팅 한 후에도 계속 남아 있습니까?

+0

아니요, 레지스트리는 영원하지 않습니다. 마지막 줄에 설명 된대로 키를 추가하면됩니다. 흥미롭게도, 타사 레지스트리 편집기 나 내장 Visual Studio "원격 레지스트리 편집기"를 사용하면 둘 다 키를 성공적으로 삭제하는 것처럼 보입니다.하지만 전원을 껐다 켜면 키가 다시 나타납니다! 마지막으로 수동으로 키를 삭제했지만 이번에는 전원이 꺼지지 않고 시작> 일시 중지 명령을 사용하고 키가 삭제되었습니다. – AlainD

+0

이 경우 플러시로 문제가 해결 될 수 있으며 코드에 오류가있는 것으로 보입니다. suspend는 전체 파일 시스템의 플러시를 강제 할 것이며, 이것은 다른 행동을 설명 할 수 있습니다. 키를 추가하면 하이브 파일의 크기가 늘어나지 만 하이브 파일을 삭제하면 그렇지 않을 수 있습니다. 레지스트리를 저장하는 데 사용되는 저장소에서 캐싱을 사용하도록 설정 했습니까? 어쩌면 거기에 뭔가 잘못된 것이있을 수 있습니다. –

+0

저장소에서 캐싱이 활성화되어 있는지 어떻게 확인합니까? CE 5.0 및 CE 6.0 장치는 모두 독일의 동일한 공급 업체에서 공급합니다. 내가 아는 한, 장치 (및 관련 스토리지)는 비슷하게 구성됩니다. 최신 CE 6.0 장치는 더 빠른 프로세서, 더 많은 메모리를 가지고 있으며 CE 5.0 대신 CE 6.0이 실행됩니다. – AlainD

관련 문제