Search

windows 서비스와 애플리케이션간의 프로세스간 통신을 위하여 IPC를 사용했다.

서비스를 서버로 하고 애플리케이션은 클라이언트로 하여 통신을 하려고 하였는데

애플리케이션<->애플리케이션간에 통신에서는 볼 수 없었던 접근문제를 발견...

 

"System.Runtime.Remoting.RemotingException: Failed to connect to an IPC Port: Access is denied"

 

"IPC 포트에 연결할 수 없습니다.: 액세스가 거부되었습니다." -> 대충 비슷한 오류 메세지였습니다.... 글쓰는 시점에서 오류 재현을 안해서... 게으름을 탓하여 주십시요...

 

어렴풋하게나 다른 계정으로 돌아가는 서비스의 IPC서버로는 애플리케이션이 접속할때 권한을 다르게 해주어야 될거같은 느낌은 들었지만 ㅋㅋㅋ 이럴줄은 몰랐다.

찾아보니(바로가기) 권한을 부여할 수 있는 서버와 클라이언트 채널의 생성자가 있었다.

역시 어려운 일이 있어야 인간은 발달하는가보다 ;;;

 

*서버

IpcServerChannel(IDictionary, IServerChannelSinkProvider);

 

*클라이언트

IpcClientChannel(IDictionary, IClientChannelSinkProvider);

바로 IDictionary 인수에 각 채널의 설정을 달수가 있는데 예를 들면 이렇게 하더라.

 

BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();

System.Collections.IDictionary prop = new System.Collections.Hashtable();

prop["portName"] = "Server";
prop["authorizedGroup"] = "Everyone";

IpcServerChannel clientCh = new IpcServerChannel(prop, serverProvider); //클라이언트도 마찬가지.

 

IServerChannelSinkProvider,  IClientChannelSinkProvider 역할은 아직 몰라 설명을 못드리겠습니다. 공부하고 있어요. 기회가 되면 포스팅하겠습니다.

 

 

저작자 표시 비영리 동일 조건 변경 허락
신고