Q&A

  • 레지스트리를 변경했는데여..
우선 소스없이 질문하게된점 사과 드립니다..

요점만 말하면..
A(기존에 사용하는 프로그램), B(제가 새로만든프로그램)둘다 동시에 로드된
상태에서 사용해야 하는 프로그램입니다.
그런데 이A라는 프로그램이 로드 되면서 사용하는 PC의 DNS주소를 자신이
사용하는 DNS로 변경을 하드라구요.. 그래서 저는 B라는 프로그램에
레지스트리 값을 변경해서 DNS를 원래대로 환원시키는 코드를 넣었습니다..

근데 황당한게.. A라는 프로그램에서 변경한 DNS정보를 사람손으로 변경하면
둘다 제데로 작동하는데 B라는 프로그램에서 레지스트리값을 변경해서
DNS를 변경하면 작동을 안합니다..
혹시 레지스트리 변경후 무슨 리플레쉬나,리로드,아니면 적용 뭐 이런작업을
해야 하나여.. 왜 프로그램에서 사람이 하드시 똑같이 DNS를 변경했는데
사람이하면 되구 프로그램에서 하면 안되는지 몰겠내요..

설명이 조금 어려웠나..
암튼 제가 내린결론은 레지스트리 변경후  "적용" 과 같은 이런효과를 주는
명령어가 있나여..
1  COMMENTS
  • Profile
    김영대 2003.04.12 06:28
    // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다  

    // 레지스트리의 변경여부 알리는 2가지 방법

    [1] 첫번째
      프로그램에서 레지스트리를 변경하는 루틴을 실행했고
      다른 프로그램에서 같은 레지스트리의 섹션을 참조하고 있다면
      다른 프로그램들로 하여금 레지스트리가 변경되었다는 것을 알려
      Refresh 하도록 유도해야 합니다
      변경하는 프로그램에서는 다음과 같이 하세요

      SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
                      LongInt(PChar('레지스트리의 섹션명')));

      물론 레지스트리의 섹션명은 사용자가 변경한 섹션명을 말합니다
      만약 Windows NT 를 사용한다면 WM_SETTINGCHANGE 를 WM_WININICHANGE 로
      바꾸시면 됩니다

    [2] 두번째
      desktop에 F5키를 누른 효과를 보내서 Registry를 Refresh 하도록 합니다

      SendMessage(FindWindow('Progman', 'Program Manager'), WM_COMMAND, 106597, 0);