none
레지스트리 가져올때 64비트 관계 RRS feed

  • 질문

  • RegistryKey regkey = Registry.LocalMachine;
                string currentVerion = (string)regkey.OpenSubKey(@"SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment\").GetValue("CurrentVersion");
                label1.Text = currentVerion;

    이렇게 레지스트리에서 값을 가져오고 있는데

    64비트는 따로 WOW6432Node 폴더가 있는데 이걸지우고

    RegistryKey regkey = Registry.LocalMachine;
                string currentVerion = (string)regkey.OpenSubKey(@"SOFTWARE\JavaSoft\Java Runtime Environment\").GetValue("CurrentVersion");
                label1.Text = currentVerion;

    이렇게 해도 값이 정상적으로 받아져옵니다. 클래스가 알아서 64비트 인식하고 가져오는건가요?

    물론 SOFTWARE\Wow6432Node 여기에만  JavaSoft키가 있지 SOFTWARE하위에는 JavaSoft 키가 없습니다.

    2015년 11월 24일 화요일 오후 1:54

답변

  • 32비트 응용 프로그램이 32비트 운영체제에서 실행할 때는 SOFTWARE\JavaSoft\Java Runtime Environment 경로의 값을 읽어옵니다.

    하지만 32비트 응용 프로그램이 64비트 운영체제에서 실행할 때는 해당 레지스트리 경로가 "SOFTWARE\Wow6432Node\avaSoft\Java Runtime Environment"가 됩니다.

    64비트 운영체제에서 원래의 "SOFTWARE\JavaSoft\Java Runtime Environment" 레지스트리는 64비트 응용 프로그램을 위해 존재하는 것입니다.

    정리하면, 64비트 운영체제에서 Wow6432Node가 포함된 경로의 JRE는 32비트 환경이고, 포함되지 않은 경우는 64비트 JRE를 의미합니다. 둘 중의 하나가 없다면 그에 해당하는 JRE가 설치되지 않은 것입니다.

    2015년 11월 25일 수요일 오전 1:25