7-Zip에> 4GB SFX 아카이브 (자동 압축 풀림 아카이브)를 경고없이 만들었습니다. 받는 사람이 추출하려고하면 다음과 같은 오류 리본이 나타납니다.
.exe
4GB보다 크기 때문 입니다. 7-Zip을 설치 한 후 아카이브를 추출 할 수 있었지만 Windows가 왜 그런 실행 파일을 실행할 수 없는지 궁금합니다. 그리고 재정의를 통해 가능합니까?
7-Zip에> 4GB SFX 아카이브 (자동 압축 풀림 아카이브)를 경고없이 만들었습니다. 받는 사람이 추출하려고하면 다음과 같은 오류 리본이 나타납니다.
.exe
4GB보다 크기 때문 입니다. 7-Zip을 설치 한 후 아카이브를 추출 할 수 있었지만 Windows가 왜 그런 실행 파일을 실행할 수 없는지 궁금합니다. 그리고 재정의를 통해 가능합니까?
답변:
Windows는이 스레드에 따라 4GB보다 큰 실행 파일을 지원하지 않습니다.
http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/
해설자 "Igor Pavlov"는 7-Zip의 제작자이자 관리자입니다. 그 의견은 다소 미묘하지만 , 같은 조언을 반복하는 다른 포럼이 소스 포지 포럼에 있습니다. 64 비트 OS에서 실행 파일을 실행하면 Windows 실행 파일의 크기 제한, 즉 Windows PE 형식 자체 의 제한이 될 수 있으므로 차이가 있다고 생각하지 않습니다 .
64 비트 프로그램 작성에 대한 이 기사 는 다음을 제안합니다.
Win64 파일의 실행 파일 "이미지"(메모리에로드 된 코드 / 데이터)의 크기는 2GB로 제한됩니다. AMD64 / EM64T 프로세서는 대부분의 명령어에 상대적인 주소 지정을 사용하고 상대 주소는 dword로 유지되기 때문입니다. dword는 ± 2GB의 상대 값만 보유 할 수 있습니다.
아마도 Igor는 ± 2GB를 사용하여 4GB를 달성하는 방법을 생각해 냈습니다.
4GiB - 1B = 2^32 - 1 bytes = 4,294,967,295 bytes
입니다. WinRAR을 사용하여 .EXE 파일 형식으로 자동 압축 풀림 보관 파일을 만들어 Windows 10 64 비트에서이를 확인할 수있었습니다. 크기의 실행 파일 4GiB
은 시작되지 않지만 제대로 4GiB - 1B
작동합니다.
PE32에 대한 * .exe, * .dll 등과 같은 Windows 실행 파일 및 64 비트 버전 PE32 + (32 비트 및 64에 적용)에 4GB보다 큰 자체 추출 실행 파일을 갖는 것은 극단적 인 측면입니다. 비트 버전).
둘째, 실행 파일은 실행 전에 RAM에 완전히로드되며 Windows에 의해 제한받지 않더라도 (그러나 당신은) 하드웨어에 의해 쉽게 제한 될 수 있습니다.이 경우 실제 RAM의 양입니다.