윈도우서비스와 윈폼에서 레지스트리 OpenSubKey값이 다른이유가 궁금합니다.

안녕하세요 레지스트리 값을 읽어오려고 하는데 OpenSubKey에서 받아오는 값이
윈도우서비스프로젝트에서 할때랑 윈폼프로젝트에서 할때랑 다르게 받아오더라구요.
소스는 다음과 같습니다.

                    RegistryKey reg = Registry.CurrentUser;
                    reg = reg.OpenSubKey("Software\\test", true);

                    if (reg != null)
                    {
                        try
                        {
                            Object val = reg.GetValue("result"); // 기본값을 가져오려면 ""  나머지는 "이름"
                            if (null != val)
                            {
                                Sessions.Broadcast(Convert.ToString(val)); //연결된 모든 클라이언트에 전송
                            }
                        }                     
                    }

윈폼 - CurrentUser-Software-test 에 result의 값을 잘 받아옴.
윈도우서비스 - Users - .DEFAULT - Software로 가서 OpenSubKey가 null을 반환
찾아본 경우로는 64비트냐 32비트냐에 따라 매칭되는 곳이 다르다고 하는데…
찾아본 방법대로 빌드도 다르게해보고 OpenBaseKet로 32비트로 열어보기도했지만 바뀌진 않더라구요.
둘의 차이가 정확히 어떤지 궁금합니다!

2개의 좋아요

현재 로그인된 유저가 다르기 때문입니다. 그리고, 윈도우 서비스는 일반 로그인과 달리 User Profile이 없다고 보시면 됩니다.방법이 있을 것 같아 보이지만 윈도우에 로그인 안한 상태에서 테스트해보면 같은 계정이라도 실제로 로그인한 사용자 계정의 프로파일이 로그인 안한 상태의 윈도우 서비스에는 적용되지 않습니다.

따라서, CurrentUser가 아닌 LocalMachine을 사용하거나 레지스트리 대신 파일 등을 사용하셔야 합니다.

4개의 좋아요

답변 감사합니다. currentuser가 아닌 다른 루트를 사용해보겠습니다.
좋은 하루되세요!!

2개의 좋아요