명명 된 파이프를 사용하여 두 응용 프로그램 간의 통신을 만들었습니다. 첫 번째 응용 프로그램은 CreateNamedPipe
이라는 이름의 파이프를 만들고 두 번째 응용 프로그램에서 보낸 ReadFile
으로받은 메시지를 읽습니다. 두 응용 프로그램 모두 의도 한대로 통신 할 수 있습니다.명명 된 파이프에서 메시지의 보낸 사람을 식별하거나 권한을 부여하는 방법은 무엇입니까? (CreateNamedPipe)
수신 메시지의 발신자를 식별 할 수 있습니까? 신원 확인 (보낸 사람의 exe 경로 가져 오는 것과 같은)이 없거나 다른 모든 응용 프로그램에서 해당 파이프를 사용하여 응용 프로그램에 메시지를 보낼 수 있습니다.
(편집) 더 자세한 사항은, 보인다 있기 때문에이 경우 중요 :
이 파이프를 작성하는 응용 프로그램이 Windows 서비스로 실행됩니다. 두 응용 프로그램은 모두 같은 시스템에서 로컬로 실행됩니다.
직접 구현해야합니다. 파이프는 보안 개체이지만 Windows 용 보안 모델은 응용 프로그램 지향이 아니므로 사용자 지향적입니다. –
적어도 메시지가 어디에서 왔는지 알아내는 방법이 없습니까? 명명 된 파이프를 통해 메시지를 보낸 파일의 핸들/이름/경로 같은 것이 있습니까? – CodeX
@ CodeX는 직접적으로 사용할 수 없습니다. 발신자는 메시지 데이터 자체 내에서 자신을 식별해야합니다. 서버가 독자적으로 결정할 수있는 유일한 방법은 메시지를 보낸 앱을 실행하는 사용자 계정입니다. 그리고 그렇게하기 위해서는 서버가 [연결 클라이언트를 가장해야합니다 (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365573 (v = vs.85) .aspx)해야합니다. 사용자 정보를 검색하십시오.서버에 충분한 권한이있는 경우 ** 해당 로컬 시스템에서 열린 핸들을 열거하고 해당 사용자가 열고 핸들을 찾고 서버 파이프 이름을 가리킬 수도 있습니다 ... –