Eu não acredito que isso seja possível. O código de sinalização específico que seu programa provavelmente está examinando é o sinalizador SM_REMOTESESSION
. Como SQLChicken apontou, você pode derrotar isso para um único usuário, tentando pegar a sessão do console, o que vai deixar você com SM_REMOTESESSION = 0
, mas para vários usuários, eu não acho que isso possa ser feito.
Aprecio que isso seja frustrante, mas você provavelmente terá que trabalhar com o fornecedor do programa para resolver isso. É um monte de trabalho corrigir software que se comporta mal sob TS, uma vez que geralmente é causada pela mentalidade ruim do Windows que todos os computadores são apenas PDAs de tela grande e vários usuários estão fora de questão (e rede é realmente para usuários avançados). Problemas causados por isso não estão limitados à função "Não pode ser incomodado para testar" que você descreve (algo como isto:
#include <windows.h>
#pragma comment(lib, "user32.lib")
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
), mas também o uso de recursos compartilhados e o uso adequado de gráficos (a razão pela qual isso é realmente difícil de fazer certo é discutido por Raymond Chen ).
Portanto, a menos que você tenha algum outro mecanismo para provar que o software funciona corretamente com vários usuários, eu estaria inclinado a supor que derrotar a verificação SM_REMOTESESSION não seria suficiente.