IPC 채널을 여러 클라이언트에서 사용하는 .NET Remoting 서버가 있습니다. 관리자 만 파이프에 액세스 할 수 있도록 서버 끝을 설정해야합니다. 서버 채널에 "authorizedGroup"속성이 있다는 것을 알고 있습니다.IPC 채널 권한이 부여 된 그룹
설정하지 않은 경우 서버와 클라이언트가 동일한 계정 (확인)을 사용하는 태양인 경우에만 통신 할 수 있습니다. "Users"(영어 버전의 Windows 사용)로 설정하면 LocalSystem에서 서버를 실행할 수 있으며 다른 사용자가 실행중인 클라이언트는 연결할 수 있습니다 (확인). 전용 그룹을 만들면 잘됩니다. 그러나 로컬 Administrators 그룹의 구성원 만 연결할 수 있도록 구성하려고합니다. 나는 authorizedGroup을 "Administrators"또는 "BUILTIN \ Administrators"로 설정하려고 시도했지만 클라이언트를 실행하는 사용자가 Administrators 그룹의 구성원인데도 기본적으로 "액세스가 거부되었습니다"라는 클라이언트 쪽에서 예외가 발생합니다.
서버 구성 :
var clientProv = new BinaryClientFormatterSinkProvider();
var serverProv = new BinaryServerFormatterSinkProvider() { TypeFilterLevel = TypeFilterLevel.Full };
Hashtable channelProperties = new Hashtable();
channelProperties.Add("portName", "MyService");
channelProperties.Add("authorizedGroup", "Administrators");
channelProperties.Add("secure", "true");
channelProperties.Add("exclusiveAddressUse", false);
channel = new IpcChannel(channelProperties, clientProv, serverProv);
ChannelServices.RegisterChannel(channel, false);
RemotingServices.Marshal(this, "MyService.rem");
클라이언트 구성 : 내가 무슨 일을 할 수
var clientProv = new BinaryClientFormatterSinkProvider();
var serverProv = new BinaryServerFormatterSinkProvider() { TypeFilterLevel = TypeFilterLevel.Full };
Hashtable channelProperties = new Hashtable();
channelProperties.Add("portName", "remotingClient_" + Guid.NewGuid().ToString("N"));
channelProperties.Add("authorizedGroup", GetNameForSid(WellKnownSidType.LocalSystemSid));
channelProperties.Add("exclusiveAddressUse", false);
channelProperties.Add("secure", "true");
channelProperties.Add("tokenImpersonationLevel", "identification");
channel = new IpcChannel(channelProperties, clientProv, serverProv);
ChannelServices.RegisterChannel(channel, false);
var uri = "ipc://" + "MyService/MyService.rem";
RemotingConfiguration.RegisterWellKnownClientType(new WellKnownClientTypeEntry(typeof(IMyService), uri));
remoteServer = (IMyService)Activator.GetObject(typeof(IMyService), uri);
어떤 생각? 아니면 적어도 어떻게이 문제를 디버깅을 시작합니까.
채널의 서버 및 클라이언트쪽에 대한 구성 코드를 게시 할 수 있습니까? LocalService가 아닌 LocalSystem으로 실행하고 있습니까? – csaam
서비스가 로컬 시스템으로 실행 중입니다. 작업 mgr이이를 SYSTEM으로 표시합니다. –