본문 바로가기
Study/Etc

64bit OS에서 32bit 프로세스가 System32 폴더에 접근 하는 방법!

by 뿡뿡대마왕 2012. 2. 6.
반응형

Windows\system32\xxxx....

64비트 os에서 32비트로 제작된 프로세스가 저위의 경로에 접근해야 할 일이 생겼다.
저 system32폴더내의 파일을 내가 지정한 파일이 존재해야 하는지 확인할려고 하는데
분명 파일은 존재하는데 여러 API함수로 파일 존재여부를 판단하는데 자꾸 파일이 없다고 나오는게 아닌가?
헐.. ㅡ,,.ㅡ 
 
그렇다..32bit프로세스기 때문에 system32폴더가 아닌 syswow64를 체크하기 때문이다.
이를 피하기 위해서는 syswow64 redirection 을 끄면 되는데 그 방법은 간단하다.

PVOID OldValue;

Wow64DisableWow64FsRedirection(&OldValue);  //끄기
// TO-Do : system32 폴더에서 작업을 수행할 수 있다.
Wow64RevertWow64FsRedirection(OldValue); // 활성화
 
그리고 저렇게 말고도 직접 system32폴더에 접근할 수 있는데 경로명에서
system32를  Sysnative  로 변경해서 쓰면 system32폴더로 이동된다.

하지만 저 방법은 비스타 이후에 추가된 내용이므로 xp 64bit에서는 사용이 불가한 것으로 알고 있다.

syswow64 redirection을 disable 시킨상태에서 cmd나 regedit 같은것도 64비트것(?)이 적용된다.

음..예를들어 레지스트리 파일은 .reg파일을 32bit프로세스에서 아래처럼

ShellExecute(NULL,_T("open"),_T("regedit.exe"), 커맨드, NULL,SW_HIDE);

해서 reg파일을 적용시키면 wow6432node에 있는 레지스트리에 적용된다...

따라서 그곳이 64비트 레지가 있는곳에 적용시키기 위해서는

syswow64 redirection을 disable하고 적용하면 정상적으로 동작됨을 확인 할 수 있다.^^ 

- 정보는 공유 되어야 한다 계속!!쭈욱~ -

 


반응형

댓글