윈도우 서비스 프로그램에서 다이얼로그로 메세지를 보내려고 합니다. 하지만 비스타 이상에서..
안녕하세요.
윈도우 Service프로그램을 만들어 사용중입니다.
이 서비스 프로그램은 UI 다이얼로그를 가지고 있으며 다이얼로그에서 서비스를 Install, startup, shutdown 할 수 있으며,
서비스 영역에서 보낸 문자열을 다이얼로그 리스트 박스에 출력하기도 합니다.
아시겠지만 서비스와 어플리케이션 다이얼로그 경계가 존재하기 때문에 서비스에서 할당한 값이 다이얼로그에 일반적인 방식으로 할당하면
다이얼로그에 값이 출력 되지 않습니다.
그래서 서비스 프로퍼티에서 로그온계정을 윈도우 상호작용으로 체크하여 로컬 계정으로 설정 후, FindWindow로 SendMessage로 값을 전달하여
잘 사용 중이었습니다.
헌데, Vista 이상(Vista, Win7, 2008 R2)에서는 이 서비스 상호작용을 해도 FindWindow로 다이얼로그 핸들을 절대 얻을 수 없게 변경되었더군요. 보안이슈 때문인 것 같습니다.
그래서 위와 같이 서비스 영역의 값을 다이얼로그에 출력을 할 수 없는 상태입니다.
서비스에서 다이얼로그로 보내려는 데이터는 간단하게 구분문자(숫자나 문자), 값(문자열) 구조이고요, 서비스에서 다이얼로그로 아주 빈번하게 로그 메세지를 보내듯 빈번히 보내야 합니다.
정리하자면 FindWindow를 사용하여 메세지를 보내는 방식 말고 다른 방법으로 서비스 to 다이얼로그 메시지 전송을 구현을 해야 하는데 어떤 방식을 써야 할지 조언을 구하고자 합니다.
공유 메모리 맵을 써야 할지.. IPC는 FindWindow를 사용하는 것으로 알고 있어 안될 것 같고요..
감사합니다.
Named Pipe 가 유력한
Named Pipe 가 유력한 후보가 되겠군요
댓글 달기