-
C# 관리자권한에서 AllowDrop 동작하지 않는 현상Programming/C,C++,C# 2020. 8. 19. 11:19반응형
결론부터 말씀드리면 해결방법이 없는 것 같습니다.
Vista부터 UAC가 도입되면서 사용자 계정 및 프로세스 수준에 따라 여러 가지 제한사항이 발생합니다.
UAC활성 상태에서는 기본적으로 낮은 권한의 프로세스가 높은 권한의 프로세스에 메시지를 보낼 수 없습니다.
그리고 AllowDrop 속성 또한 그대로 영향을 받아 하위 수준의 프로세스에서 Drag&Drop를 하는 경우에는
동작을 하지 않습니다.
아래는 시도해 본 방법들입니다.
1. ChangeWindowMessageFilter 적용
Winform의 Drag & Drop방식은 WM_DROPFILES 방식이 아니라서 Form.WndProc를 재정의하고
WM_DROPFILES 메시지도 별도로 핸들링 처리를 해줬습니다.
그리고 ChangeWindowMessageFilter 또는 ChangeWindowMessageFilterEx를 사용해 WM_DROPFILES, WM_COPYGLOBALDATA를 허용해줬지만 안됩니다.
왜 안되는지는 모르겠습니다.
2. manifest 수정
manifest파일 requestExeccutionLevel 항목의 uiAccess 속성 값을 true로 변경하면 된다고 하는데
단순히 속성만 수정했을 때는 아예 실행단계에서 오류가 발생하여 더 이상 확인하지 않았습니다.
해당 속성을 적용하기 위한 선조건으로 프로세스 파일의 위치가 windows 또는 program files 폴더에 있어야 하고, 서명을 해야 한다고 합니다.
위치는 별 문제가 안되지만 서명은 테스트서명으로도 되는지 안되는지 까지는 확인하기 귀찮아서 더 이상 안 했습니다.
제가 확인해본 방법은 크게 위 2가지입니다. 반드시 drop을 사용해야 하는 상황이 아니라서 더 이상은 확인을
안 해봤지만 아마도 해결책이 없는 것으로 보입니다.
관련 링크
https://stackoverflow.com/questions/68598/how-do-i-drag-and-drop-files-into-an-application
https://stackoverflow.com/questions/2833709/c-sharp-drag-drop-does-not-work-on-windows-7
반응형'Programming > C,C++,C#' 카테고리의 다른 글
CEF 새창(Popup)에서 --allow-running-insecure-content 동작하지 않는 현상 (0) 2020.08.20 DataGridView 1번째 컬럼(RowHeader) 안보이게 처리하는 방법 (3) 2016.03.10 [MFC] HFONT로부터 폰트명 확인 (Get font name from HFONT) (1) 2015.01.14