Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

196
Views
Excepción de acceso no autorizado NamedPipeServerStream

Recibí una entrada de Event Viever de uno de mis usuarios que decía que ocurrió una Excepción de acceso no autorizado. El proceso se inicia desde un servicio como SISTEMA. Pude reducir el error a la parte donde se crea NamedPipeServerStream:

 // <error in this block> PipeSecurity pipeSa = new PipeSecurity(); pipeSa.AddAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), PipeAccessRights.ReadWrite, AccessControlType.Allow)); NamedPipeServerStream np = new NamedPipeServerStream("streamname", PipeDirection.InOut,1,PipeTransmissionMode.Message,PipeOptions.None,16383,1, pipeSa); // </error in this block> while (true){ try{ if (!np.IsConnected) np.WaitForConnection(); }catch(Exception e){ } }

Estoy bastante seguro de que el error está en el bloque de 3 líneas de arriba. No sucede en ninguna de mis computadoras, por lo que no puedo repetir el error. ¿Qué en el código anterior no se considera la mejor práctica y puede causar errores?

imagen del mensaje de error:

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La pregunta que hiciste tiene muy pocos detalles. Por lo tanto, será difícil reducir cuál es la verdadera causa. Sin embargo, estoy dispuesto a intentarlo.

Si observa la documentación de la Excepción de acceso no autorizado

La excepción que se genera cuando el sistema operativo deniega el acceso debido a un error de E/S o un tipo específico de error de seguridad.

Podemos ver que su código ya se traga todas las excepciones. Entonces, probablemente podamos asumir que esto se lanza al crear la tubería.

Mi mejor suposición es que hay ocasiones en las que no puede acceder a la tubería porque el sistema no tiene el acceso adecuado a la tubería. Después de hacer una investigación rápida. Esta pregunta parece tener mucha información buena que vale la pena probar. Parafraseando algunas respuestas:

Hay dos cosas que pueden hacer que falle la instanciación de un segundo o posterior NamedPipeServerStream en la misma canalización:

  • el argumento ctor maxNumberOfServerInstances debe haberse establecido en más de 1 cuando se creó la primera instancia del servidor de canalización. De lo contrario, la segunda llamada fallará a menos que la primera instancia ya se haya cerrado por completo.
  • el proceso que llama al ctor debe tener el derecho de acceso representado por PipeAccessRights.CreateNewInstance. Este es un derecho poderoso que el servidor de canalización debe guardar celosamente, ya que permite a su poseedor la capacidad de actuar como servidor de canalización.

Probablemente le falta un privilegio que necesita para agregar un derecho de acceso, tal vez necesite proporcionar control al sistema:

 pipeSa.AddAccessRule(new PipeAccessRule("SYSTEM", PipeAccessRights.FullControl, AccessControlType.Allow)); pipeSa.AddAccessRule(pa);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!