Saya menggunakan program "SoftXPand 2011 Duo" oleh Miniframe di PC Windows 7 saya. Itu membuat dua workstation dari satu komputer. Ini menggunakan layanan terminal yang dibangun ke dalam Windows untuk membuat sesi tambahan. Saya menggunakan dua layar, dua keyboard dan dua mouse untuk membuat "ilusi" dua komputer ini. Ini bekerja dengan sangat baik dan saya bahkan dapat memainkan dua game 3D yang berbeda pada dua layar yang terpasang pada mesin tunggal ini (menggunakan Radeon HD5770 dan Core i5 2500k dengan 8 Gbytes RAM).
Ada beberapa kerugian untuk ini. Saya baru saja menemukan satu yang tersembunyi pada tampilan pertama. Sesi Anda berada (bahkan pada workstation pertama) akan mengidentifikasi sebagai sesi server terminal! Sekarang beberapa program akan berjalan dengan efek terbatas (grafis), dan beberapa tidak akan berjalan sama sekali.
Ini juga mengakibatkan beberapa game tidak berjalan sama sekali. Mereka hanya mengatakan "Tidak dapat dijalankan dalam sesi terminal server" dan keluar. Saya telah membuktikan bahwa game modern papan atas (DirectX 10, 11) berjalan sama baiknya dengan pada mesin yang sama tanpa SoftXPand, jadi ini adalah batasan yang cukup artifisial!
Jadi, bisakah saya meretas sesi saya saat ini sehingga tidak terlihat seperti sesi server terminal lagi? YAITU
#include <windows.h>
#pragma comment(lib, "user32.lib")
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
Akan mengembalikan SALAH? (Bukan pertanyaan pemrograman! Hanya contoh bagaimana program mendeteksi jika mereka berada dalam sesi server terminal!)
sumber
Jawaban:
Ada beberapa cara bagi suatu aplikasi untuk memeriksa apakah itu berjalan dalam sesi Terminal Server. Beberapa di antaranya mungkin Anda retas, seperti di bawah ini:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
.Kunci ini tidak ada dalam sesi normal di desktop saya.
Anda mungkin mencoba menghapusnya, jika Anda bisa.
Anda dapat mencoba menjalankan game Anda dari Command Prompt (cmd) setelah melakukannya
SET SESSIONNAME=Console
(nilai desktop saya) atauSET SESSIONNAME=
(kosong).Untuk mengetahui nilainya saat ini, masukkan
SET SESSIONNAME
sebelum mengubah apa pun.Tidak banyak yang dapat Anda lakukan untuk melawan yang satu ini, kecuali menulis hook sistem untuk itu.
Jika tertarik lihat artikel codeproject.com ini: Hooking API terungkap .
sumber
Saya menemukan solusinya: menjalankan program yang Anda inginkan dengan "runas"
Setelah Anda masuk melalui desktop, ketikkan dalam cmd:
runas / pengguna: YOUR_NAME "YOUR_PROGRAM_PATH"
Saya mengujinya terhadap perangkat lunak Bently dan mereka bekerja dengan baik.
sumber
Saya menggunakan Microsoft Remote Desktop dan saya sudah mencoba 2 metode pertama yang diposting oleh @harrymc, tetapi mereka tidak berfungsi dalam kasus saya. Yang ketiga terlalu rumit untuk saya, jadi saya belum mencobanya.
Pada akhirnya, saya menemukan bahwa Akses Paralel memungkinkan saya untuk menggunakan program yang menunjukkan kesalahan. Ini tidak semulus RDP, jadi saya menggunakannya jika saya benar-benar harus menggunakan program ini.
sumber
Tidak menjawab pertanyaan SoftXPand secara langsung, tetapi saya berakhir di sini karena pencarian Google dan jawabannya adalah @ harrymc.
Saya membuat file batch yang mengalami keterlambatan 60 detik dan kemudian memulai aplikasi yang ingin saya jalankan. Saya memulai file batch, keluar dari koneksi RDP saya, menunggu sekitar 5 menit dan kemudian terhubung kembali dengan RDP. Aplikasi sial yang saya inginkan sedang menunggu saya ketika saya kembali. Berikut isi file batch:
Kutipan di sekitar jalur diperlukan jika Anda memiliki spasi di jalur.
Mendapat informasi batch dari sini: /programming/8324352/creating-a-batch-file-for-programs-to-start-using-a-delay
alat peraga untuk orang ini: /programming//users/959263/raihan
(Dikatakan untuk memberikan rincian dan membagikan penelitian saya)
sumber