아이고~~~~
언제나 고마운 도움을 공짜로 받고 있습니다. 감사합니다.
아주 잘됩니다....
^^
빌더(TWx) 님이 쓰신 글 :
: 예성곤 님이 쓰신 글 :
: : Windows 10 64비트에서 XE4 사용 중입니다.
: :
: : 아래 레지스트리 찾는 코드입니다.
: : 실행 파일을 관리자 권한으로 설정하여 실행시켰지만 경로명이 올라오지 않습니다.
: :
: : WIndows 7 32비트에서는 잘되는 코드입니다만....
: :
: :
: : String RGSKey = "\\SOFTWARE\\GPL Ghostscript\\9.15";
: :
: : TRegistry *TReg = new TRegistry;
: : TReg->RootKey = HKEY_LOCAL_MACHINE;
: : bool sResult = TReg->OpenKey(RGSKey,true);
: : if (!sResult) {
: : MessageDlg("Ghost Script 9.15가 설치되어 있지 않습니다.", mtError, TMsgDlgButtons() << mbOK, 0);
: : return;
: : }
: : String FGSPath = ExtractFilePath(TReg->ReadString("GS_DLL"));
: : TReg->CloseKey();
: : delete TReg;
: :
: :
:
: 답변:
:
:
: 64bit OS에서 프로그램을 64bit로 컴파일해서 만들었다면 위의 코드는 아무런 문제가 없을 겁니다.
:
: 64bit OS 에선 커널, 디바이스 드라이버 및 시스템 dll 들 또한 64bit로 구성되어 있고... 64bit OS에서 32bit Application들은
: 별도의 32bit 포션들이 존재하지만 Thunk 레이어를 통해서 32bit와 64bit간에 프로세스 모드를 전환하면서 결국은 64bit 서비스
: 코드들을 호출하게 됩니다.
:
: 64bit OS에선 시스템 디렉토리 액세스, 레지스트리 하이브 액세스 등과 관련해서 Redirection 을 이용한 Virtualization이
: 이용되는데 (
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=free&no=25126 참고)
:
: 64bit OS 에서 32bit 애플리케이션이 위와 같은 레지스트리 하이브를 액세스 하려면 아래와 같이 명시적으로 지정을 하므로써
: Redirection Virtualization을 바이패쓰 할 수 있습니다.
:
: TRegistry *reg = new TRegistry(KEY_READ|KEY_WOW64_64KEY);
:
:
: 64bit OS의 가장 기본적인 특성을 간과 하고 있는 듯...
:
:
:
: