본문 바로가기
VB.net

Windows-64bit에 system32폴더를 wow64 폴더로 Redirection 방지

by 호야호잇 2018. 6. 8.


'windows 32bit 프로그램을 이용하여 Windows 64bit OS에서 구동 시 Wow64 폴더가 아닌 system32를 사용하게 


[선언]

  Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As IntPtr) As Boolean

[사용]

  Wow64DisableWow64FsRedirection(True)


----------------------------------------------------------------------------------------------------------------------


[시스템 폴더] - 참고

1. 개요[편집]

Microsoft WindowsmacOS리눅스와 같은 운영 체제에서 기능 확장, 제어판, 폰트 등의 기본적 파일 및 하위 시스템 지원 파일 등을 포함하는 커널을 담고 있는 중요한 폴더. 따라서 폴더 전체 혹은 폴더 일부를 수정하면 컴퓨터 전체가 부팅이 안되거나 OS를 재설치를 해야할수 있다.

2. 상세[편집]

운영체제 종류 및 버전, 시스템 비트 수에 따라 그 위치가 달라진다. 다음은 Windows 기준 시스템 폴더의 위치.

Windows 시스템 폴더

MS-DOS(16비트) 기반

\Windows[1]

9x 커널(16/32비트) 기반

\Windows\System[2]

NT 커널(32비트) 기반

\Windows[3]\System32[4]

NT 커널(64비트) 기반

\Windows\System32[5]
\Windows\SysWOW64[6]


Windows Vista 이후부터 윈도우 설치 폴더 아래에 WinSxS(Side-by-Side) 디렉터리가 존재한다. 윈도우 업데이트 등으로 대체된 구 버전 파일이 필요한 경우에 대비해서 쌓아두는 공간이다.[7]

3. 주의사항[편집]

과거부터 지금까지 컴퓨터를 잘 모르는 수많은 사람들이 컴퓨터에 생긴 문제를 해결하기 위해 질문글을 올렸는데 장난기 많은 사람들이 낚시를 하기 위해서 컴퓨터 에러 질문글에 "Windows 폴더 밑의 system32를 삭제해라."는 답변을 달아주고 있으며[8], 진짜로 지웠다가 컴퓨터 망가뜨린 사람들도 자주 보인다. 특히 나이 어린 아이들이나 나이 많은 어르신들이 곧잘 속아 넘어가는 경우가 많다.

이 폴더를 함부로 건드리거나 안의 파일들을 삭제할 경우 컴퓨터 작동에 문제가 생길 수 있다. 매우 중요한 폴더인 만큼, Windows 7에서는 소유자가 무조건 TrustedInstaller로 설정되어 편집 자체를 막고있고,[9] Windows 8부터는 UAC를 끄더라도 이 폴더에 뭔 짓을 하려 한다면 UAC에서 이를 차단한다.[10]

4. 기타[편집]

리눅스 등 유닉스 계열에서는 /boot, /dev, /etc, /root, /usr 등이 전부 시스템 폴더이다. 다행히 이 폴더들은 시스템 특성상 루트 사용자(root)가 아니면 아예 수정 조차 못하게 막고 있다. macOS는 여기에 /Library, /System도 시스템 폴더로 잡혀서 계정 비밀번호를 요구한다. *NIX 시스템에서 권한에 관계 없이 마구 수정해도 되는 것은 시스템 또는 배포판에 따라 다르지만 /var, /tmp, 그리고 자신의 홈 디렉터리(~/.) 정도가 전부. 물론 sudo로 rm -rf /를 수행했다면 얄짤없다. 물론 rm -rf는 하도 사고가 많이 나서 이런저런 안전장치가 붙어있다. 덤으로 macOS 경우 10.11 오면서 루트리스란걸 들고 와서 멋대로 삭제도 안되게 바뀌었다.

사용자 관리 개념이 없는 DOS에서는 그런 거 없기 때문에 매우 위험, 아이러니하게도 이러한 점 때문에 커널을 무조건 뚫고 하드웨어에 접근해야 하는 유틸리티는 대부분 DOS 전용으로만 나오고 있다.[11] 이 경우말고 하드웨어에 접근할 수 있는 유일한 방법은 BIOS를 통하는 것 뿐.

[1] 3.x까지만 해도 시스템 구조가 단순했기 때문에 Windows 폴더 안에 대부분 저장했다. 이 시절의 잔재로, notepad.exe나 write.exe와 같은 일부 파일들은 Windows 폴더와 System32 폴더, SysWOW64 폴더에 모두 존재한다.[2] System32도 있지만 일부 드라이버 파일만 보관되며 기타 시스템 운영에 필요한 파일에는 거의 이용되지 않는다.[3] Windows 2000까지는 WINNT였다.[4] System도 남아 있는데, 여기에는 16비트 프로그램의 하위 호환에 사용되는 시스템 파일 및 드라이버 파일이 들어 있다. 현재는 16비트 프로그램이 고사했기 때문에 그다지 의미가 없어졌다.[5] System32는 64비트용 시스템 파일 보관, SysWOW64는 에뮬레이트된 32비트용 시스템 파일을 보관한다. 왠지 반대로 된 것 같은데, 이유는 System32라는 폴더 이름이 너무 오랫동안 쓰여서, 괜히 바꿨다가 호환성 문제가 생길 수 있기 때문에(시스템 폴더 경로를 하드코딩해놓은 문제가 가장 크다) 그대로 쓰이는 것이다. 여담으로 64비트 윈도우에서는 16비트 프로그램을 돌릴 수 없기 때문에(AMD64 참고) System 폴더는 존재하기는 하지만 내용물이 없다.[6] 64비트 윈도우에서는 일반적인 32비트 프로그램이 System32 경로의 파일에 접근하려 하면 실제로는 SysWOW64에 있는 파일로 접근하게 되어 있다. 만약 32비트 프로그램이 System32(64비트) 폴더에 접근해야 한다면 프로그래밍 시 특정한 선언을 정의해야 한다. 참고로 WOW64는 'Windows 32-Bit oWindows 64-Bit'에서 나왔는데, '64비트 Windows 위의 32비트 Windows'를 의미한다.[7] Windows XP에도 WinSxS 폴더가 존재하기는 하지만 용도가 다르다. 정확히 아시는 분께서 추가바람.[8] 언어 국적 불문하고 널리 퍼진 세계적인 낚시이다.[9] 물론 takeown과 icacls 명령어를 이용하여 소유자와 권한을 가져오면 삭제는 된다만 하지 말자.[10] Windows 8부터 Windows 10 RS2까지는 UAC를 꺼도 알림창만 띄우지 않을 뿐, 실제로는 UAC가 돌아가기는 한다. 레지스트리를 조작하거나 Administrator 계정을 쓰면 UAC를 우회할 수 있지만, 이렇게 하면 설정 앱을 제외한 Windows 스토어 앱이 열리지 않는다. 이 방법을 쓰면 Administrator 계정에서도 스토어 앱을 열 수 있지만, Administrator 계정의 관리자 권한을 없애버리기 때문에 UAC가 다시 동작한다. RS3 빌드부터 스토어 앱을 열 수 있게 바뀌었지만, 사용자 계정 설정에서 UAC를 완전히 끌 수 없는 것은 동일하다. 참고로 Administrator 계정이 기본적으로 사용되는 Server 계열 운영체제는 기본적으로 설정 앱을 제외한 UWP 앱이 존재하지 않는다.[11] 과거에는 Windows 9X 용도 있었으나 NT 계열로 넘어가면서 모두 막혔기 때문에 이제는 DOS에서만 된다고 보면 된다. 사실 Windows 9X용도 Windows 9X의 특정상 DOS로 우회해서 동작하는 방식이다.