64 비트 창에서 32 비트 지원을 완전히 제거 할 수있는 방법이 있습니까?


3

전체 syswow64를 완전히 비활성화하고 싶습니다. 내 목표는 32 비트 응용 프로그램을 실행하거나 64 비트 Windows 시스템에서 32 비트 DLL을로드하는 것을 불가능 하게하는 것입니다. 일부 이전 32 비트 시스템에서는 에뮬레이션 할 수 있지만 64 비트에서는 더 이상 에뮬레이션 할 수없는 이전 16 비트 Windows 응용 프로그램과 유사합니다.

Linux에서는 커널 컴파일 구성 또는 일부 sysctl설정 에서 32 비트 에뮬레이션을 비활성화 할 수 있습니다 . 그러나 Windows에서 무엇을 할 수 있습니까?

어떻게 든 가능합니까?

32 비트 프로그램과 64 비트는 더 이상 작동하지 않지만 문제가되지는 않습니다. 실제로, 그것은 나의 목표입니다.

목표는 64 비트 전용 Windows 환경에서 실험하는 것입니다. 유용성에 대한 토론을 시작하거나 필요한지 여부는 매우 논란의 여지가 있습니다. 나는 논쟁이 아닌 해결책을 원한다 .


이것을하는 이유는 무엇입니까? 32 비트를 비활성화하려는 이유는 무엇입니까? 나는 당신이 실제로 X 문제를 겪고 있음을 감지하고 있지만, Y가 문제를 해결할 것이라고 생각하기 때문에 대신 Y를 요구합니다. X는 무엇입니까?
거짓말 라이언

이것이 근본 원인이 아닙니다. 왜 64 비트 전용 환경을 실험해야합니까? 모든 x86_64 CPU에는 32 비트 코드를 실행하는 기본 지원 기능이 포함되어 있으며 해제 할 수 없습니다. 64 비트 명령어 세트가 32 비트 명령어 세트의 상위 세트이기 때문에 에뮬레이션, 모드 스위치가 없으며 기본적으로 실행됩니다. 이것은 메모리 가상화가없는 다른 CPU 모드 (레거시 모드)에서 실행되어야하는 DOS 모드 인 16 비트 Windows 응용 프로그램과는 다릅니다. 기본적으로 16 비트 응용 프로그램은 다른 운영 체제에서 실행되고있었습니다.
Lie Ryan

1
64 비트를 인식하지 않는 프로그램이 실행되지 않도록하면 어떤 이점이 있습니까?
Lie Ryan

@LieRyan 불행히도,이 질문은 그것이 필요하지 않은지에 관한 것이 아닙니다. 이 질문은 어떻게 도달 할 수 있는지에 관한 것입니다. 나는 당신이 한 일을 피하고 싶었 기 때문에 내 목표를 밝히지 않았습니다. 64 비트 전용 시스템의 유용성에 대한 무의미한 토론을 원한다면 그런 질문을 할 것입니다. 불행히도, 귀하의 의견을 "건설적이지 않은"및 "주제"로 서명하는 더 나은 옵션은 없었습니다. 이제 제발 가세요
peterh

1
@unforgettableid 1 : 혼합 32/64 코드 세그먼트는 동일한 주소 공간에 살 수 없으며 협력을 위해 일부 IPC 메커니즘을 사용해야합니다. 이로 인해 다양한 앱 내 호환성 문제가 발생합니다 .2 : 32 비트 프로세스는 많은 64 비트 호스트 시스템과 함께 실행되는 32 비트 dll (기본적으로 32 비트 w $의 복사본) 3 : m $ 개발 4의 전체 무능력에 대한 명확한 서명 입니다. 프로세스 당 4G 주소 공간 제한.
peterh

답변:


2

이를 달성하는 가장 간단한 방법은 일반 사용자가 응용 프로그램을 설치할 수 없도록하는 것입니다. 64 비트 응용 프로그램 만 설치하는 경우 Windows에서 여전히 사용하는 32 비트 프로세스를 제외하고 64 비트 응용 프로그램 만 실행됩니다.

소비자 버전의 Windows에서는 "에뮬레이션"이 아닌 WoW64 하위 시스템을 비활성화 할 수 없습니다. Windows Server에서 가능합니다 . 나는 그것이 단순히 비활성화 될 수 있는 Windows Featureon 이라고 가정 할 것입니다 Windows Server. 링크 된 기사에서는 이전 버전의 Windows Server에 대한 버전 별 명령을 제공합니다.


일반 사용자는 컴퓨터를 제대로 잠그지 않으면 아무것도 설치할 수없는 경우에도 휴대용 앱을 계속 실행할 수 있습니다.
잊을 수없는

3

bruteforce 방법은 AppInit로드시 32 비트 버전이 충돌 하는 DLL 을 사용하는 것 입니다. 모든 32 비트 프로세스가이를로드하므로 시작하기 전에 모두 충돌합니다. 어쨌든 32 비트 DLL을로드하지 않기 때문에 64 비트 프로그램에 직접적인 해를 끼치 지 않지만 모든 32 비트 설치 프로그램은 실행을 거부합니다.


훌륭한 해결책 (아마도 정말 무례한 것 같습니다). 그런 dll이 항상 로드되도록 보장 할 수 있습니까 ?
peterh

한 번 작동하면 적어도 99 %의 성공을 거둘 것이라고 확신합니다. 가능한 예외 : Microsoft 프로세스, SYSTEM계정 상태 등
MSalters

아마도 충돌이 필요하지 않았을 것입니다 exit(0).Windows API와 동등한 것입니까?
peterh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.