2010-07-09 19 views
9

Si mi aplicación se inicia, primero compruebo si ya hay una instancia de la aplicación y, en caso afirmativo, le doy enfoque a la instancia en ejecución y termino el proceso recién creado. Lo hago con un tubo con nombre que está registrado a través de WCF. Eso funciona bien hasta ahora.Canalizaciones con nombre aisladas en sesiones de Terminal Server

Ahora mi aplicación también se utilizará en un entorno de servidor de terminal. ¿Es correcto que las canalizaciones con nombre son de todo el sistema, por lo que debo cambiar la lógica de inicio para no centrar las instancias de otros usuarios (lo que ciertamente no funcionará sino romper mi aplicación) o el Servidor de Terminales (2003R2) aisla WCF-Bindings para cada TS-sesión?

No puedo acceder al entorno productivo todavía, es por eso que publico esta pregunta. Tal vez alguien me puede dar una respuesta a esta pregunta?

actualización

A través another post Yo relativo a la puesta en marcha de aplicaciones, aprendí que hay una manera más conveniente de administrar el inicio de la aplicación única utilizando una exclusión mutua, que puede ser el sistema utiliza ancha o en una sesión de terminal base.

La pregunta, sin embargo, está abierta de todos modos y tal vez alguien que tenga un buen conocimiento de WCF pueda responderla. Sería interesante.

Respuesta

8

Las tuberías con nombre son de todo el sistema. No hay un prefijo "Global" o "Local" como existe para otros tipos de objetos de kernel.

Esto se debe a que las tuberías con nombre se utilizan como parte de un recurso de red, por ejemplo, myComputer\pipename. Los objetos que obtienen los prefijos "Global" y "Local" (eventos, semáforos, mutexes, temporizadores, asignaciones de archivos y trabajos) tienen un alcance en la computadora y no se puede acceder a ellos desde otra computadora.

1

En este artículo se explica cómo restringir canalizaciones con nombre para una sola sesión de servidor de terminal: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365600(v=vs.85).aspx

Para evitar que los usuarios o los usuarios remotos en una sesión de servicios de terminal diferente de acceder a una tubería con nombre, utilice el SID de inicio de sesión en el DACL para la tubería. El SID de inicio de sesión también se usa en los inicios de sesión como inicio de sesión; es el SID utilizado para proteger el espacio de nombres de objetos por sesión. Para obtener más información, vea Obtener el SID de inicio de sesión en C++. https://msdn.microsoft.com/en-us/library/windows/desktop/aa446670(v=vs.85).aspx

Cuestiones relacionadas