Ich verwende das Programm "SoftXPand 2011 Duo" von Miniframe auf meinem Windows 7-PC. Es macht zwei Workstations aus einem Computer. Es verwendet die in Windows integrierten Terminaldienste, um die zusätzliche Sitzung zu erstellen. Ich benutze zwei Bildschirme, zwei Tastaturen und zwei Mäuse, um diese "Illusion" von zwei Computern zu erzeugen. Es funktioniert ganz gut und ich kann sogar zwei verschiedene 3D-Spiele auf den beiden Bildschirmen spielen, die an diesen einzelnen Computer angeschlossen sind (mit einer Radeon HD5770 und einem Core i5 2500k mit 8 GB RAM).
Dies hat einige Nachteile. Ich habe gerade eine gefunden, die auf den ersten Blick versteckt ist. Die Sitzungen, an denen Sie teilnehmen (auch auf der ersten Workstation), werden als Terminalserversitzung identifiziert! Jetzt werden einige Programme mit begrenzten Effekten (grafisch) ausgeführt, andere überhaupt nicht.
Dies führte auch dazu, dass einige Spiele überhaupt nicht ausgeführt wurden. Sie sagen nur "Kann nicht in einer Terminalserversitzung ausgeführt werden" und beenden. Ich habe bereits bewiesen, dass moderne Top-Spiele (DirectX 10, 11) genauso gut laufen wie auf demselben Computer ohne SoftXPand. Dies ist also eine ziemlich künstliche Einschränkung!
Kann ich meine aktuelle Sitzung irgendwie hacken, damit sie nicht mehr wie eine Terminalserversitzung aussieht? IE
#include <windows.h>
#pragma comment(lib, "user32.lib")
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
Wird FALSE zurückkehren? (Keine Programmierfrage! Nur ein Beispiel, wie Programme erkennen, ob sie sich in einer Terminalserversitzung befinden!)
quelle
Antworten:
Es gibt verschiedene Möglichkeiten für eine Anwendung, um zu überprüfen, ob sie in einer Terminalserversitzung ausgeführt wird. Einige davon könnten Sie wie folgt hacken:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
.Dieser Schlüssel fehlt in einer normalen Sitzung auf meinem Desktop.
Sie könnten versuchen, es zu löschen, wenn Sie können.
Sie können versuchen, Ihr Spiel über die Eingabeaufforderung (cmd) auszuführen, nachdem Sie
SET SESSIONNAME=Console
(mein Desktop-Wert) oderSET SESSIONNAME=
(leer) ausgeführt haben.Geben Sie ein,
SET SESSIONNAME
bevor Sie Änderungen vornehmen , um den aktuellen Wert zu ermitteln .Gegen diesen kann man nicht viel tun, außer einen System-Hook dafür zu schreiben.
Bei Interesse lesen Sie diesen Artikel auf codeproject.com: API-Hooking enthüllt .
quelle
Ich habe eine Lösung gefunden: Ausführen der gewünschten Programme mit "runas"
Nachdem Sie sich über den Desktop angemeldet haben, geben Sie dies in cmd ein:
runas / user: YOUR_NAME "YOUR_PROGRAM_PATH"
Ich habe es mit Bentlys Software getestet und sie funktionieren gut.
quelle
Ich verwende Microsoft Remote Desktop und habe die ersten beiden von @harrymc veröffentlichten Methoden ausprobiert, aber sie funktionieren in meinem Fall nicht. Der dritte ist mir zu kompliziert, deshalb habe ich ihn nicht ausprobiert.
Am Ende stellte ich fest, dass Parallel Access es mir ermöglicht, das Programm zu verwenden, bei dem der Fehler angezeigt wurde. Es ist nicht so flüssig wie RDP, also benutze ich es, wenn ich das Programm wirklich benutzen muss.
quelle
Die SoftXPand-Frage wird nicht direkt angesprochen, aber ich bin wegen einer Google-Suche hier gelandet und sie ist die Antwort von @ harrymc.
Ich habe eine Batchdatei mit einer Verzögerung von 60 Sekunden erstellt und dann die App gestartet, die ich ausführen möchte. Ich habe die Batchdatei gestartet, mich von meiner RDP-Verbindung abgemeldet, ungefähr 5 Minuten gewartet und mich dann wieder mit RDP verbunden. Die nervige App, die ich wollte, wartete auf mich, als ich wieder einstieg. Hier ist der Inhalt der Batchdatei:
Die Anführungszeichen um den Pfad sind erforderlich, wenn der Pfad Leerzeichen enthält.
Habe die Batch-Infos von hier: /programming/8324352/creating-a-batch-file-for-programs-to-start-using-a-delay
Requisiten an diesen Typen: /programming//users/959263/raihan
(Es soll Details liefern und meine Forschung teilen)
quelle