विंडोज: कैसे प्रोग्राम बनाने के लिए लगता है कि वे टर्मिनल सर्वर सत्र में नहीं चल रहे हैं?


10

मैं अपने विंडोज 7 पीसी पर मिनीफ्रेम द्वारा प्रोग्राम "सॉफ्टएक्सपैंड 2011 डुओ" का उपयोग कर रहा हूं। यह एक कंप्यूटर से दो वर्कस्टेशन बनाता है। यह अतिरिक्त सत्र बनाने के लिए विंडोज में निर्मित टर्मिनल सेवाओं का उपयोग करता है। मैं दो कंप्यूटरों के इस "भ्रम" को बनाने के लिए दो स्क्रीन, दो कीबोर्ड और दो चूहों का उपयोग करता हूं। यह काफी अच्छी तरह से काम करता है और मैं इस सिंगल मशीन से जुड़ी दो स्क्रीन पर दो अलग-अलग 3D गेम भी खेल सकता हूं (8 Gbytes RAM के साथ एक Radeon HD5770 और Core i5 2500k)।

इसके लिए कुछ डाउनसाइड्स हैं। मैंने सिर्फ एक के बारे में पाया जो पहली नज़र में छिपा हुआ है। आपके द्वारा (पहले कार्यस्थान पर भी) सत्र एक टर्मिनल सर्वर सत्र के रूप में पहचाने जाएंगे! अब कुछ प्रोग्राम सीमित प्रभाव (ग्राफिकल) के साथ चलेंगे, और कुछ बिल्कुल नहीं चलेंगे।

इसके परिणामस्वरूप कुछ खेल बिल्कुल नहीं चल रहे थे। वे बस कहते हैं "एक टर्मिनल सर्वर सत्र में नहीं चलाया जा सकता" और बाहर निकलें। मैंने पहले ही साबित कर दिया है कि शीर्ष आधुनिक गेम (डायरेक्टएक्स 10, 11) सॉफ्टएक्सपैंड के बिना एक ही मशीन पर उतना ही अच्छा चलता है, इसलिए यह एक सुंदर कृत्रिम सीमा है!

तो, क्या मैं किसी तरह अपना वर्तमान सत्र हैक कर सकता हूं ताकि यह टर्मिनल सर्वर सत्र की तरह न दिखे? अर्थात।

#include <windows.h>
#pragma comment(lib, "user32.lib")

BOOL IsRemoteSession(void)
{
   return GetSystemMetrics( SM_REMOTESESSION );
}

FALSE लौटेगा? (एक प्रोग्रामिंग सवाल नहीं! बस एक उदाहरण है कि कैसे प्रोग्राम का पता लगाता है कि वे टर्मिनल सर्वर सत्र में हैं!


क्या आपके पास दो कीबोर्ड / स्क्रीन हैं? कृपया अपने सेटअप पर कुछ और विस्तृत करें।
harrymc

@harrymc हां, मैं करता हूं। संपादन।
sinni800

जब आप कंसोल सत्र का उपयोग कर रहे होते हैं, तब भी ऐप्स एक टर्मिनल सर्वर पर चलने से मना कर देते हैं, यह लाइसेंस के कारणों के कारण होता है - ताकि एक ही समय में एक से अधिक व्यक्तियों द्वारा एक लाइसेंस का उपयोग नहीं किया जा सके।
paradroid

जवाबों:


5

यह मिनिफ्रेम, सॉफ्टएक्सपांड डुओ के डेवलपर्स हैं। हम सुझाव देते हैं कि टर्मिनल सर्वर में सॉफ्टएक्सपैंड डुओ को चलाने के साथ त्रुटि को हल करने के लिए एक सिफारिश के लिए हमारे नॉलेजबेस को देखें

"टर्मिनल सर्वर सत्र में चलाया नहीं जा सकता" त्रुटि को हल करने के लिए कैसे करें


यह लिंक काम नहीं करता - miniframe.com/component/kb/article/... यह एक काम करता है, हालांकि! क्या मैं अर्धविराम (?) का उपयोग करके कई कार्यक्रम दर्ज कर सकता हूं इसके अलावा, यहाँ, SuperUser पर आपकी पहली 125 प्रतिष्ठा है! :) मैंने इस मुद्दे के लिए एक ई-मेल भी भेजा है, मैं डी * @ ई है ot.de
sinni800

वह लिंक भी काम नहीं करता है
bradgonesurfing

7

किसी एप्लिकेशन के लिए यह जाँचने के कई तरीके हैं कि क्या वह टर्मिनल सर्वर सत्र में चल रहा है। उनमें से कुछ आप नीचे दिए अनुसार हैक कर सकते हैं:

  1. रजिस्ट्री: HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
    यह कुंजी मेरे डेस्कटॉप पर एक सामान्य सत्र में गायब है।
    आप इसे हटाने की कोशिश कर सकते हैं, यदि आप कर सकते हैं
  2. SESSIONNAME पर्यावरण चर मान: कंसोल / "RDP #" / (खाली)।
    आप कमांड प्रॉम्प्ट (cmd) से अपना गेम चलाने की कोशिश कर सकते हैं
    SET SESSIONNAME=Console (मेरा डेस्कटॉप मान) या SET SESSIONNAME= (खाली)।
    इसके वर्तमान मूल्य का पता लगाने के लिए, दर्ज करें SET SESSIONNAME कुछ भी बदलने से पहले।
  3. सिस्टम कॉल करता है GetSystemMetrics (SM_REMOTESESSION) तथा GetVersionEx ( OSVERSIONINFOEX.wSuiteMask ) निष्पादन संदर्भ वापस करें।
    इस के खिलाफ आप ज्यादा नहीं कर सकते, सिवाय इसके लिए सिस्टम-हुक लिखने के।
    अगर दिलचस्पी इस codeproject.com लेख को देखें: एपीआई हुकिंग से पता चला

2) पर, सत्र का नाम "कंसोल" (क्या बिल्ली है?)। कुंजी TSAppCompat यहाँ भी गायब है। तीसरे के बारे में ... करने में मुश्किल लग रहा है। क्या कोई ऐसा प्रोग्राम नहीं है जो किसी अन्य प्रोग्राम के शीर्ष पर बैठता है और सिस्टम कॉल को स्वीकार करता है जैसे मैंने उल्लेख किया था? GetSystemMetrics।
sinni800

आपकी जानकारी के अनुसार, शायद 3rd विधि GetVersionEx और GetSystemMetrics के लिए हमला करने लायक है। मैंने ऊपर एक लिंक जोड़ा है (प्रोग्रामर द्वारा उपयोग किया जाने वाला)।
harrymc

एक और नोट: यदि उपयोग करने का कोई तरीका है MSTSC / व्यवस्थापक सॉफ्टएक्सपैंड में, यह एक कोशिश के लायक है।
harrymc

@harrymc क्यों MSTSC / एडमिन? मैं एपीआई हुकिंग में देखूंगा ... यह मेरी प्रोग्रामिंग क्षमताओं के लिए बहुत जटिल हो सकता है।
sinni800

"MSTSC / व्यवस्थापक" एक लंबा शॉट है: यह कुछ अलग दूरस्थ सत्र प्रकार है, इसलिए हो सकता है कि कुछ कार्यक्रम इसका पता न लगा सकें।
harrymc

0

मुझे एक समाधान मिला: "रनस" के द्वारा आप जो प्रोग्राम चाहते हैं उसे चला रहे हैं

डेस्कटॉप से ​​लॉग इन करने के बाद, cmd में टाइप करें:

रनस / उपयोगकर्ता: OR_NAME "your_PROGRAM_PATH"

मैंने इसे बेंटली के सॉफ्टवेयर्स के खिलाफ टेस्ट किया और वे अच्छा काम करते हैं।


यह टर्मिनल सर्वर समस्या को रोकता है? दिलचस्प है, मुझे कोशिश करनी होगी।
sinni800

बड़े पैमाने पर प्रभाव 3 के साथ काम नहीं करता है (यह कार्यक्रम दूरस्थ रूप से नहीं चलाया जा सकता है)
Mgamerz

0

मैं Microsoft दूरस्थ डेस्कटॉप का उपयोग कर रहा हूं और मैंने @harrymc द्वारा पोस्ट किए गए पहले 2 तरीकों की कोशिश की है, लेकिन वे मेरे मामले में काम नहीं करते हैं। तीसरा मेरे लिए बहुत जटिल है इसलिए मैंने इसे आजमाया नहीं है।

अंत में, मैंने पाया कि समानांतर एक्सेस मुझे उस प्रोग्राम का उपयोग करने में सक्षम बनाता है जो त्रुटि दिखा रहा था। यह आरडीपी जितना आसान नहीं है, इसलिए मैं इसका उपयोग करता हूं अगर मुझे वास्तव में कार्यक्रम का उपयोग करना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.