1
CreateNamedPipe
메서드에 대해 SECURITY_ATTRIBUTES
(마지막 매개 변수)을 지정해야했습니다. 나는 모든 사람에게 완전한 접근을 허용하고 싶다. null
에 lpSecurityDescriptor
는 기본 액세스 권한을 제공하지만 모든 사람을위한 모든 권한을 원하는 설정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;
}
:
내가 조립 수있는 가장 깊이있는 코드는 이것이다.