Mam NamedPipeClientStream, który łączy się z NamedPipeServerStream. Wymieniają kilka komunikatów, a następnie zamykają NamedPipeClientStream, a NamedPipeServerStream ponownie tworzy i kontynuuje nasłuchiwanie dla potoków klienta. (Nie mogłem wykonać asynchronicznej instalacji Server Pipe, więc jest to rodzaj psiego gwoździa)NamedPipeClientStream nie może uzyskać dostępu do NamedPipeServerStream w sesji 0
Interakcja klient-serwer działa poprawnie podczas strumieni moich klientów uruchamianych z normalnych sesji użytkownika.
Istnieje jednak sytuacja, gdy rura klienta jest uruchamiana z sesji 0 na serwerze Win7 i win2008. Kiedy to nastąpi miałem błąd w strumieniu klient:
„Dostęp do drogi jest zabroniony”
Na czym polega problem? Jak tego uniknąć?
Niestety, nie mogę podać więcej informacji na temat wyjątku. Mam tylko tę wiadomość w dzienniku. I nie mogę debugować programu z sesji zerowej, prawda?
Serwer kod stream:
PipeSecurity ps = new PipeSecurity();
System.Security.Principal.SecurityIdentifier sid = new System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.BuiltinUsersSid, null);
PipeAccessRule par = new PipeAccessRule(sid, PipeAccessRights.ReadWrite, System.Security.AccessControl.AccessControlType.Allow);
ps.AddAccessRule(par);
pipeClientConnection = new NamedPipeServerStream(General.PIPENAME, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, General.BUFFERSIZE, General.BUFFERSIZE, ps);
Console.Write("Waiting for client connection...");
IAsyncResult result = pipeClientConnection.BeginWaitForConnection(OnPipeConnected, pipeClientConnection);
Może coś jest nie tak z ustawieniami zabezpieczeń?
I kod klienta:
using (NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", General.PIPENAME, PipeDirection.InOut))
{
try
{
Console.WriteLine("Connecting with pipe...");
pipeStream.Connect(General.CONNECTIONTIMEOUT);
Console.WriteLine("Pipe connection established");
//..do something..
}
//...
}
Serwer jest uruchomiony jako usługa systemu Windows pod LocalSystem. Klient - jest prostą aplikacją konsolową. Jest uruchamiany przez inną aplikację uruchomioną z usługi LocalSystem.
link jest uszkodzony. Nienawidzę tego, że Microsoft stale reorganizuje swoje strony internetowe i pozostawia miliony niedziałających linków w całym Internecie. – RenniePet