के रूप में चलाया जाता है मेरे पास एक डेल्फी 2010 एक्सई है जो एक दूसरा एक्सई लॉन्च करता है। दूसरे exe में, एक संवाद है जो openDialog.execute को कॉल करता है। जब यह रिमोट डेस्कटॉप के तहत विंडोज 2008 एंटरप्राइज़ आर 2 के तहत चलता है, तो यह के रूप में चलता है, लेकिन जब रिमोट एप्लिकेशन के रूप में चलाया जाता है, जैसे ही फ़ाइल संवाद पॉप हो जाता है, एप्लिकेशन लटकता है, सभी एप्लिकेशन विंडो को सफेद करता है। इससे बाहर निकलने का एकमात्र तरीका एप्लिकेशन को समाप्त करना है। मैंने TFileOpenDialog के साथ TOpenDialog को बदलने की कोशिश की, परिणाम समान हैं। मैंने आरडीपी फ़ाइल को संशोधित करने में देखा है जो मुख्य एप्लिकेशन लॉन्च करता है, लेकिन वहां कोई पैरामीटर नहीं देख सकता जो इससे फर्क पड़ेगा। क्या किसी ने कभी इस तरह के व्यवहार को देखा है?डेल्फी टोपेनडियलॉग विंडोज 2008 में लटकता है जब दूरस्थ डेस्कटॉप एप्लिकेशन
2010.07.13
यह एक सरल उदाहरण का उपयोग reproducable है अपडेट किया गया। उदाहरण में दो निष्पादन योग्य फाइलें हैं। पहला फ़ाइल लॉन्चर है, जिसे m_module.exe कहा जाता है, जिसमें एक संपादन, एक बटन और नीचे दिया गया कोड होता है।
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.execute;
end;
पहले:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', stringToOLEstr(edit1.text) , nil, nil, SW_SHOWNORMAL) ;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
edit1.text:=application.exename;
end;
दूसरा निष्पादन एक बटन और नीचे दिए गए कोड में शामिल हैं: मैं दूसरे निष्पादन मिलान करने के लिए इससे पहले कि मैं लांच बटन पर क्लिक करें संपादित में निष्पादन योग्य फ़ाइल का नाम बदलने के मॉड्यूल आरडीपी फ़ाइल से लॉन्च किया गया है। आवेदन फ़ोल्डर में \ Windows \ System32 फ़ोल्डर से
thumbcache.dll
dtsh.dll
wkscli.dll
, समस्या को समाप्त किया जाता है:
2010.07.14
मैं ने पाया है कि अगर मैं निम्नलिखित DLLs कॉपी अपडेट किया गया।
मुझे और पता चला है कि ट्रस्टेड इंस्टालर से \ Windows \ System32 फ़ोल्डर में इन डीएल के स्वामित्व और अनुमति स्तर को प्रशासक के समूह में बदलना एक ही परिणाम है (उन्हें एप्लिकेशन निर्देशिका में कॉपी करना स्वामित्व और अनुमति मुझे बदल रहा है)
इस बात की पुष्टि करने के लिए, मैं सत्यापित है कि त्रुटियों अगर मैं स्वामित्व और अनुमति स्तर वापस TrustedInstaller के लिए प्रशासक समूह से दूर बदल दोबारा प्रकट हुई।
तो ऐसा लगता है कि यह किसी प्रकार का एक एक्सेस मुद्दा है। शायद यह इस मुद्दे के कारण की खोज में मदद करेगा।
GetWindowsDirectory http://msdn.microsoft.com/en-us/library/ms724454%28VS.85%29.aspx के लिए इस MSDN लेख टर्मिनल सर्विसेज के तहत चल आवेदनों में से कुछ दिलचस्प व्यवहार दस्तावेजों:
2010.07.18
(Embarcadero द्वारा प्रदान की) कुछ अतिरिक्त जानकारी के लिए उपयुक्त हो सकती अपडेट किया गया। GetWindowsDirectory सीधे प्रति उपयोगकर्ता Windows सिस्टम निर्देशिका के सैंडबॉक्सिंग नामक नहीं किया जा रहा है, वहीं समस्या किसी प्रकार का कारण हो सकता है। शायद GetOpenFileNameA को बुला श्रृंखला में DLLs में से एक के बजाय sandboxed एक इस तरह एक अधिकारों के उल्लंघन के कारण की वास्तविक सिस्टम निर्देशिका में वास्तविक DLL संदर्भित कर रहा है। यह सिर्फ अटकलें हैं, लेकिन यह जांच कर रही लायक है।यदि आप सर्वर पर काम कर रहे SysInternals Process Monitor या Process Explorer को प्राप्त करने में सक्षम थे, तो आपको स्टैक ट्रेस लोड होने पर commdlg32 और अन्य DLLs देखने में सक्षम होना चाहिए।
सभी विरासत अनुप्रयोग (यानी टर्मिनल सेवा या रिमोट डेस्कटॉप सेवाओं के लिए बनाए गए सभी एप्लिकेशन) अनुप्रयोग संगतता परत के अंतर्गत चलते हैं। यह एमएसडीएन आलेख http://msdn.microsoft.com/en-us/library/cc834995%28VS.85%29.aspx देखें। IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE ध्वज Windows.PAS में परिभाषित किया गया है। परीक्षण प्रयोजनों के लिए आप अपने आवेदन के लिए Windows जोड़कर अपने आवेदन के पीई हैडर में जोड़ सकते हैं अनुभाग उपयोग करता है और अधिकार के तहत उपयोग करता है अनुभाग डाल:
{$ SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
इस अनुकूलता बायपास करने के लिए अपने आवेदन का कारण होगा परत। मैं वर्तमान में जांच कर रहा हूं कि क्या उत्पन्न प्रक्रियाएं (जैसे आपका दूसरा एक्सई) आरडीएस के तहत परिभाषित आवेदन के सभी अधिकारों और सेटिंग्स को बरकरार रखती है।
के बीच स्विच करते समय ऑर्डर सही हो जाएगा यदि आप दूसरा एप्लिकेशन सीधे शुरू करते हैं तो यह काम करता है? –
प्रश्न में मशीन पर एकाधिक मॉनीटर? मुझे संदेह है कि ओपन डायलॉग दूसरे मॉनीटर एरिया में खुल रहा है, न कि रिमोट डेस्कटॉप विंडो में। संवाद-एल्ट-स्पेस-एम- दबाएं और फिर संवाद को वापस देखने के लिए तीर कुंजियों का उपयोग करें। –
madExcept रिपोर्ट EAccessViolation। क्या आप टिप्पणी कर सकते हैं कि यह कैसे लटकने से संबंधित है? – Alex