Korzystam z programu „SoftXPand 2011 Duo” firmy Miniframe na komputerze z systemem Windows 7. Tworzy dwie stacje robocze z jednego komputera. Korzysta z usług terminalowych wbudowanych w Windows, aby utworzyć dodatkową sesję. Używam dwóch ekranów, dwóch klawiatur i dwóch myszy, aby stworzyć tę „iluzję” dwóch komputerów. Działa całkiem dobrze i mogę nawet grać w dwie różne gry 3D na dwóch ekranach podłączonych do tej pojedynczej maszyny (używając Radeon HD5770 i Core i5 2500k z 8 GB pamięci RAM).
Jest kilka wad tego. Właśnie znalazłem o jednym, który jest ukryty przy pierwszym spojrzeniu. Sesje, w których jesteś (nawet na pierwszej stacji roboczej) będą identyfikowane jako sesja serwera terminali! Teraz niektóre programy będą działać z ograniczonymi efektami (graficznymi), a niektóre w ogóle nie będą działać.
Spowodowało to również, że niektóre gry w ogóle nie działały. Mówią tylko: „Nie można uruchomić w sesji serwera terminali” i kończą pracę. Udowodniłem już, że najlepsze współczesne gry (DirectX 10, 11) działają tak samo dobrze, jak na tej samej maszynie bez SoftXPand, więc jest to dość sztuczne ograniczenie!
Czy mogę w jakiś sposób zhakować bieżącą sesję, aby nie wyglądała ona jak sesja serwera terminali? TO ZNACZY
#include <windows.h>
#pragma comment(lib, "user32.lib")
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
Zwróci FAŁSZ? (To nie jest pytanie programistyczne! Tylko przykład, jak programy wykrywają, czy są w sesji serwera terminali!)