C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[25126] 특정 프로그램이 실행 안되는 문제??? (sysprep.exe)
bugfree [bugfree] 7317 읽음    2015-05-05 00:21
C:\Windows\System32\Sysprep\Sysprep.exe

이상하게 sysprep.exe 프로그램은 배치파일 만들어서
돌리거나 64비트 프로그램 만들어서 ShellExecute 같은
API 이용해서 돌리면 정상적으로 실행되는데

32비트 프로그램 만들어서 돌리면 실행이 안되네요
CreateProcess, ShellExecute 다 안됩니다
풀패스를 지정해줘도 안되네요

cmd.exe 같은 쉘이나 64비트 프로그램만 실행이 허용
되도록 어떤 제한이 있는 건가요???

빌더(TWx) [builder]   2015-05-05 15:40 X
64비트 윈도우즈 운영체제에 대한 기본적인 특성을 모르거나 간과한 해프닝으로 보이네요.

64비트 OS에서 시스템 디렉토리를 32비트 프로세스가 액세스 할 때... OS가 Wow64 디렉토리로 파일시스템을 Redirection 합니다.
시스템 디렉토리를 하드코딩해서 사용하는 프로그램들이 많기 때문에, 소스코드를 수정해서 리컴파일 하지 않고 하드코딩된 기존의 32비트
프로그램들이 호환성을 갖도록 하기 위한 거고 Wow64 디렉토리에는 32비트 파일들이 들어가 있습니다.


빌더(TWx) [builder]   2015-05-05 15:44 X
아키텍쳐 종속성을 갖지 않는 한... sysprep.exe 같은 유틸리티가 32비트용과 64비트용으로 2개가 있을 필요는 없는 거고...
64비트 OS엔 64비트 버전의 sysprep.exe만 있는 상태인데.. 32비트 프로그램이 시스템 디렉토리를 액세스 하게 되니까..
파일시스템 리디렉션에 의해서 Wow64을 참조하게 되니까 sysprep.exe 를 찾을 수 없게 되는 겁니다.
빌더(TWx) [builder]   2015-05-05 15:47 X
쉘이나 64비트 프로그램에서만 가능 하거나 특별한 권한이 필요한 것도 아니고... 아래와 같은 식으로 Filesystem Redirection만 막아주면
32비트 프로그램에서도 액세스가 가능하게 됩니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    String s = "C:/Windows/System32/Sysprep/Sysprep.exe";

    PVOID prevContext = NULL;

    Wow64DisableWow64FsRedirection(&prevContext);
    ShellExecute(NULL, L"Open", s.c_str(), NULL, NULL, SW_SHOWNORMAL );
    Wow64RevertWow64FsRedirection(prevContext);
}
그 아이 [tsirorret]   2015-05-05 21:09 X
64bit를 그냥 사용하는 사람이었는데, 정말 빌더님은 대단하시군요. 생각지도 못한 문제인데 잘 기억하겠습니다.
bugfree [bugfree]   2015-05-06 12:26 X
시스템  dll만 해당하는게 아니었군요 감사합니다 ^^
bugfree [bugfree]   2015-05-06 12:37 X
그아이님?
Error detected(PDA 453) 링크에러요
XE8에선 안나던가요?
그 아이 [tsirorret]   2015-05-06 16:14 X
아직 XE8을 구매하지 않았습니다. 계속 빌더로 가야하나 고민되는 부분입니다.
어떻게든 해결해서 쓰긴 쓰겠지만, 피곤한 일이라서요.

+ -

관련 글 리스트
25126 특정 프로그램이 실행 안되는 문제??? (sysprep.exe) bugfree 7317 2015/05/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.