Estoy usando el programa "SoftXPand 2011 Duo" de Miniframe en mi PC con Windows 7. Hace dos estaciones de trabajo de una computadora. Utiliza los servicios de terminal integrados en Windows para crear la sesión adicional. Utilizo dos pantallas, dos teclados y dos ratones para crear esta "ilusión" de dos computadoras. Funciona bastante bien e incluso puedo jugar dos juegos 3D diferentes en las dos pantallas conectadas a esta sola máquina (usando una Radeon HD5770 y una Core i5 2500k con 8 Gbytes RAM).
Hay algunas desventajas en esto. Acabo de encontrar uno que está oculto en el primer vistazo. ¡Las sesiones en las que se encuentre (incluso en la primera estación de trabajo) se identificarán como una sesión de servidor terminal! Ahora algunos programas se ejecutarán con efectos limitados (gráficos), y algunos no se ejecutarán en absoluto.
Esto también provocó que algunos juegos no se ejecutaran en absoluto. Simplemente dicen "No se puede ejecutar en una sesión de servidor terminal" y salen. Ya he demostrado que los mejores juegos modernos (DirectX 10, 11) funcionan tan bien como en la misma máquina sin SoftXPand, ¡así que esta es una limitación bastante artificial!
Entonces, ¿puedo hackear de alguna manera mi sesión actual para que ya no se vea como una sesión de servidor terminal? ES DECIR
#include <windows.h>
#pragma comment(lib, "user32.lib")
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
Volverá FALSO? (¡No es una pregunta de programación! ¡Solo un ejemplo de cómo los programas detectan si están en una sesión de servidor terminal!)
fuente
Respuestas:
Hay varias formas para que una aplicación verifique si se está ejecutando en una sesión de Terminal Server. Algunos de ellos puedes hackear, como se muestra a continuación:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
.Esta clave falta en una sesión normal en mi escritorio.
Puede intentar eliminarlo, si puede.
Puede intentar ejecutar su juego desde el Símbolo del sistema (cmd) después de hacerlo
SET SESSIONNAME=Console
(mi valor de escritorio) oSET SESSIONNAME=
(vacío).Para averiguar su valor actual, ingrese
SET SESSIONNAME
antes de cambiar cualquier cosa.No puedes hacer mucho contra este, excepto escribir un gancho de sistema para ello.
Si está interesado, vea este artículo de codeproject.com: se revela el enganche API .
fuente
Encontré una solución: ejecutar los programas que desea mediante "runas"
Después de iniciar sesión a través del escritorio, escriba eso en cmd:
runas / usuario: YOUR_NAME "YOUR_PROGRAM_PATH"
Lo probé con los softwares de Bently y funcionan bien.
fuente
Estoy usando Microsoft Remote Desktop y probé los primeros 2 métodos publicados por @harrymc, pero en mi caso no funcionan. El tercero es demasiado complicado para mí, así que no lo he probado.
Al final, descubrí que Parallel Access me permite usar el programa que mostraba el error. No es tan sencillo como RDP, así que lo uso si realmente tengo que usar el programa.
fuente
No aborda la pregunta de SoftXPand directamente, pero terminé aquí debido a una búsqueda en Google y está junto a la respuesta de @ harrymc.
Creé un archivo por lotes que tenía un retraso de 60 segundos y luego inicia la aplicación que quiero ejecutar. Comencé el archivo por lotes, salí de mi conexión RDP, esperé unos 5 minutos y luego me reconecté con RDP. La aplicación molesta que quería estaba esperándome cuando volví. Aquí está el contenido del archivo por lotes:
Las comillas alrededor de la ruta son necesarias si tiene espacios en la ruta.
Obtuve la información de lote de aquí: /programming/8324352/creating-a-batch-file-for-programs-to-start-using-a-delay
accesorios para este chico: /programming//users/959263/raihan
(decía proporcionar detalles y compartir mi investigación)
fuente