통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 33976 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 강좌&팁
 UAC가 최소화 되어 뜰때...  | ActiveX/COM 2009-08-12 오후 5:39:17
 pkrse1  pkrse1님께 메시지 보내기pkrse1님을 내 주소록에 추가합니다.pkrse1님의 개인게시판 가기 번호: 8357 추천:0  / 읽음:3,760

아래의 경우는 제가 의도적으로 발생시킨 경우입니다만...

(권한상승창이 뜨기 직전에 작업표시줄의 다른 프로그램을 누르고 있으면 발생합니다.)

 

 

 

UAC 권한 상승 요청 화면이 최소화 되어 작업표시줄에서 깜박이고 있을 경우가 있습니다.

 

사용자가 눈치채지 못하고 다른작업을 이어서 계속 하게 되면 개발자가 의도하지 않은 오류가 발생하게 됩니다.

(예: ActiveX가 권한 상승을 대기중일때 다른 페이지를 탐색)

 

이 현상은 쓰레드를 사용한 상태에서 권한상승을 요청할 경우 CoCreateInstanceAsAdmin 함수에

hwnd값을 null로 넘겨주면 발생합니다.

(ShellExecuteEx 함수에서도 발생한다고 합니다...)

 

해결방법은 GetForegroundWindow함수를 사용하여 hwnd 인자를 넘겨주면 됩니다...

 

CoCreateInstanceAsAdmin 함수의 경우

[-] Collapse

HWND hwndParent = GetForegroundWindow();
    hr = CoCreateInstanceAsAdmin(hwndParent, guidCurrentObject, iidCurrentObject, (void**)(&objElevator), TRUE);

 

ShellExecuteEx 함수의 경우

[-] Collapse

SHELLEXECUTEINFO si;
ZeroMemory(&si, sizeof(SHELLEXECUTEINFO));
si.cbSize = sizeof(SHELLEXECUTEINFO);
si.lpVerb = __TEXT("runas"); //mode : print, write
si.lpFile = __TEXT("abc.exe"); //실행파일
TCHAR appPath[_MAX_PATH];
GetCurrentDirectory(_MAX_PATH, appPath);
si.lpDirectory = appPath;
si.hwnd = GetForegroundWindow();
si.nShow = SW_SHOW; //SW_HIDE
si.fMask = SEE_MASK_NOCLOSEPROCESS|SEE_MASK_FLAG_DDEWAIT;
ShellExecuteEx(&si);

 

다음은 제가 참고한 원문입니다...

http://social.msdn.microsoft.com/Forums/en-US/windowssecurity/thread/07cf27b0-ac60-4469-a440-34c0b1a4a73f

[코멘트] 좋음
2009-08-13 10:55
 TohnoKanna  TohnoKanna님께 메시지 보내기TohnoKanna님을 내 주소록에 추가합니다.TohnoKanna님의 개인게시판 가기 
오.. . 나이스팁입니다
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.