0

다음 코드가 있습니다.

RegistryKey SOFTWARE = Registry.LocalMachine.OpenSubKey((
    from x in Registry.LocalMachine.GetSubKeyNames()
    where x == "SOFTWARE"
    select x).FirstOrDefault());
RegistryKey Allworx = SOFTWARE.OpenSubKey((
    from x in SOFTWARE.GetSubKeyNames()
    where x == "ProgramName"
    select x).FirstOrDefault());

이 컴파일하고 실행하는 모든 문제는 "ProgramName"SOFTWARE 하위 키 목록에 없습니다. 나는 그것이 regedit에서 현재보고 있기 때문에 그것이 존재한다는 것을 안다. 필자는 ProgramName 키뿐만 아니라 전체 소프트웨어 키에 대한 완전한 제어권을 부여했습니다.

참고로, 코드와 regedit는 모두 내가 찾고있는 것에 동의합니다.

Computer
  L--HKEY_LOCAL_MACHINE
       L--SOFTWARE

이 문제 외에도,SOFTWARE.getSubKeyNames()또한 regedit에 나타나지 않는 이름의 무리를 반환합니다. 이것이 어디에서오고 있는지 알지 못하며 일반적으로 내 프로그램 이름이 왜 그렇게 나타나지 않는지에 대해 더 염려합니다.


  • 수동으로 확인 / 확인할 수 있습니까?ProgramName레지스트리에 ..? 대소 문자 구분 문제가 여기에 있습니다.FirstOrDefault()쓰다First() FirstOrDefault () 대신 First를 사용하는 이유 - MethodMan
  • 64 비트 OS에서 32 비트 용으로 컴파일하기 때문에 레지스트리 리디렉션이 발생합니까? 32 비트로 컴파일하고 있습니까? Wow6432Node에 키가 있습니까? - Blorgbeard
  • @ Blorgbeard 그게 다야. 32/64 비트 차이를 고려하지 않았습니다. 답을 써서 정확한 것으로 표시해 둡니다. 감사! - Russell Uhl
  • 큰! 나는 대답을 올렸다. - Blorgbeard

1 답변


3

너는 뛰어 다니고있어.레지스트리 리디렉션. 64 비트 Windows는 32 비트 프로그램의 특정 레지스트리 요청을 자동으로 리디렉션합니다.

64 비트 프로그램으로 컴파일하거나64 비트보기를 요구하십시오.열쇠를 열 때.

연결된 질문


관련된 질문

최근 질문