¿Cuáles son las razones por las cuales las canalizaciones con nombre locales de Windows fallan?

14

He estado trabajando duro en esto todo el día y estoy atascado. Esta mañana nuestros colegas asiáticos me llamaron porque un complemento de SolidWorks para nuestro sistema de gestión de datos de productos no podía comunicarse con la aplicación principal local. El problema afecta a las computadoras de los usuarios finales en un dominio de Windows. Utilizamos las utilidades READPIPE y MAKEPIPE de la caja de herramientas del servidor SQL para descubrir que el problema subyacente era la función de canalización de Windows.

  • La utilidad MAKEPIPE crea una tubería y está esperando un cliente. La utilidad READPIPE devuelve: "Error al abrir la tubería. Estado 53". De acuerdo con http://support.microsoft.com/kb/110905 significa que no se encontró el nombre de la red. En mi computadora local, las tuberías envían un "hola" de READPIPE a MAKEPIPE sin problemas.
  • El proceso del servidor que habilita las canalizaciones con nombre se está ejecutando.
  • La configuración en HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Lanmanserver \ Parameters se ve bien. No hay configuración de firewall de tuberías.
  • El problema afecta a algunos usuarios pero no a todos. No realizamos cambios en los grupos de dominio, excepto en algunos grupos de redes compartidas.
  • Me conecté como administrador y todavía las tuberías no funcionarán.

Cualquier ayuda es apreciada! Gracias.

usuario152700
fuente
¿Pueden los usuarios afectados conectarse a archivos compartidos ordinarios en el servidor en cuestión?
Harry Johnston
No hay problemas con las acciones actualmente. Este no es un problema de servidor / cliente. Ambos procesos están en la misma computadora.
user152700
Cuando reproduce el problema, inicia sesión en una computadora afectada como Administrador, con READPIPE y MAKEPIPE, ¿cuáles son los comandos exactos que está utilizando? (Edite su publicación para incluirlos en lugar de ponerlos en un comentario.)
Harry Johnston
Gracias por su apoyo. Fue difícil y documentaré la solución aquí.
user152700

Respuestas:

12

Se necesitan 1,5 días para resolverlo en cada caso. Aquí para la documentación.

Síntomas

  • Arrastrar y soltar en aplicaciones no funciona.
  • La comunicación entre procesos, por ejemplo, entre la aplicación principal y los complementos, no funciona.

Causas / antecedentes

La comunicación entre procesos se implementa para algunas aplicaciones a través de canalizaciones con nombre de Windows (no debe confundirse con las canalizaciones de estilo UNIX). Consulte la documentación de MSDN: http://msdn.microsoft.com/en-us/library/aa365590.aspx

Puede haber diferentes causas para que las canalizaciones de nombres de Windows no funcionen. Para verificar que las tuberías son la causa del problema, se pueden usar las herramientas MAKEPIPE y READPIPE. Este artículo de KB describe el procedimiento de prueba: http://support.microsoft.com/kb/68941 El explorador de procesos de la herramienta Sysinternals también puede ser útil para buscar qué tuberías están abiertas actualmente. Use la opción "Buscar -> Buscar controlador o DLL ..." e ingrese el patrón "\ Device \ NamedPipe \". Le mostrará qué procesos tienen qué tuberías se abren. http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Solucionar problemas

Causa 1: la aplicación está bloqueada por el firewall de Pipes

Windows puede impedir que las aplicaciones usen canalizaciones con nombre. Este firewall normalmente no está habilitado y se configura a través del registro. Consulte el artículo de soporte técnico de MS aquí: http://support.microsoft.com/kb/925890 . Compruebe que el firewall de tuberías no esté habilitado o agregue Keytech y todos los complementos a la lista de aplicaciones permitidas.

Causa 2: el servicio para compartir archivos e impresoras no está habilitado.

Las canalizaciones con nombre se habilitan mediante el proceso que también controla el uso compartido de archivos e impresoras. Compruebe que este proceso se esté ejecutando con la herramienta Servicios de Windows. El nombre del servicio se muestra como "Servidor" en la lista de servicios. El nombre del servicio es LanmanServer y el EXE es C: \ Windows \ system32 \ svchost.exe -k netsvcs

Causa 3: el firewall de Windows está bloqueando LanmanServer

El cortafuegos de Windows puede bloquear tuberías con nombre incluso cuando solo se utilizan para la comunicación entre procesos en la misma máquina. Especialmente las reglas de dominio y firewall local pueden causar un conflicto. Dos entradas en la lista de "Programas permitidos de Firewall de Windows" indican un conflicto. En la mayoría de los casos, este problema se puede resolver utilizando la ventana "Verificar el estado del firewall". Si esta ventana muestra una opción para configurar las reglas de firewall recomendadas, las tuberías a menudo se pueden desbloquear con esta opción. En combinación con las reglas de firewall del dominio, a veces es necesario desunir la PC primero del dominio y luego permitir el servicio para compartir archivos e impresoras.

usuario152700
fuente
3
Causa 1) El firewall de tuberías solo afecta el acceso remoto a las tuberías con nombre. Sin embargo, tenga en cuenta que conectarse a una tubería con nombre usando \\ machinename \ pipename probablemente cuenta como acceso remoto incluso si machinename es la máquina local.
Harry Johnston
3
Causa 2) Del mismo modo, el uso compartido de archivos e impresoras solo es necesario para el acceso remoto a las tuberías con nombre. Nuevamente, \\ machinename \ pipename probablemente cuenta como acceso remoto para este propósito.
Harry Johnston el
Causa 3) El Firewall de Windows no debería poder bloquear las conexiones locales, incluso si usa \\ machinename \ pipename. Sin embargo, si está en un dominio y el Firewall de Windows está mal configurado, es posible que haya tenido problemas más generalizados, quizás relacionados con la autenticación.
Harry Johnston el
@HarryJohnston ¿Qué tipo de autenticación podría bloquearse? ¿Como se ServiceHost.Authenticationdescribe aquí ?
iCantSeeSharp
Si está en un dominio, y su acceso de red a los controladores de dominio está bloqueado por el Firewall de Windows (o por alguna otra razón) es posible que no pueda autenticarse. Eso realmente no debería afectar el acceso a la tubería local, sino YMMV.
Harry Johnston el