2016-06-25 9 views
1

CreateNamedPipe 메서드에 대해 SECURITY_ATTRIBUTES (마지막 매개 변수)을 지정해야했습니다. 나는 모든 사람에게 완전한 접근을 허용하고 싶다. nulllpSecurityDescriptor는 기본 액세스 권한을 제공하지만 모든 사람을위한 모든 권한을 원하는 설정CreateNamedPipe에 SECURITY_ATTRIBUTES를 지정하는 방법은 무엇입니까?

public static HANDLE CreateNamedPipe(String pipeName, PipeDirection pipeDirection, int maxConnections) throws NamedPipeException { 
    WinBase.SECURITY_ATTRIBUTES saAttr = new WinBase.SECURITY_ATTRIBUTES(); 
    saAttr.dwLength = new WinDef.DWORD(saAttr.size()); 
    saAttr.bInheritHandle = true; 
    saAttr.lpSecurityDescriptor = null; // it gives default access rights. I need full control for everyone 

    HANDLE handle = Kernel32.INSTANCE.CreateNamedPipe(pipeName, 
     pipeDirection.getValue(), 
     WinBase.PIPE_TYPE_BYTE | WinBase.PIPE_WAIT, 
     maxConnections, 
     Integer.MAX_VALUE, 
     Integer.MAX_VALUE, 
     0, 
     saAttr); 

    int error = Kernel32.INSTANCE.GetLastError(); 
    if(error != 0) { 
     throw new NamedPipeException(error); 
    } 
    return handle; 
} 

:

내가 조립 수있는 가장 깊이있는 코드는 이것이다.

답변

0

이것은 정확히 완전한 대답은 아니지만 도움이되기를 바랍니다.

당신이 saAttr와 아무것도하지 않으려면

, 단순히 (대신 saAttr의) 마지막 매개 변수에 대한 null을 배치하고이 함께 파이프는 기본 보안 설명을 가져옵니다. Citate 마이크로 소프트 ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa365150(v=vs.85).aspx, 만약 lpSecurityAttributes) : LocalSystem 계정, 관리자 및 작성자 소유자에게 명명 된 파이프 전체 권한 부여에 대한 기본 보안 설명에서

ACL을. 또한 Everyone 그룹의 구성원과 익명 계정에 읽기 권한을 부여합니다.