2011-05-24 14 views
7

में व्यवस्थापक अधिकारों के साथ ऐप्स विकसित करना मैं विंडोज 7 के तहत डी 2010 का उपयोग कर रहा हूं जो एक ऐप लिखने के लिए है जो प्रशासन अधिकारों की आवश्यकता है (मुझे लगता है क्योंकि यह किसी तीसरे पक्ष के साथ संवाद करने के लिए COM का उपयोग करता है .exe, जिसे व्यवस्थापक अधिकारों की भी आवश्यकता होती है) ।डेल्फी

मैं प्रकट संसाधन के रूप में आवश्यक जोड़ दिया है, लेकिन जब मैं आईडीई से एप्लिकेशन को डिबग करने के लिए प्रयास करते हैं, यह रिपोर्ट

"प्रक्रिया बनाने में असमर्थ। कार्रवाई का अनुरोध किया ऊंचाई की आवश्यकता है"

... और यह नहीं चलेगा। यदि मैं डेल्फी को व्यवस्थापक के रूप में चलाता हूं, तो मेरा ऐप सही ढंग से चलता है, लेकिन यह एक खतरनाक ब्रूट फोर्स दृष्टिकोण की तरह लगता है, खासकर जब मेरे द्वारा विकसित किए गए अधिकांश ऐप्स को व्यवस्थापकीय विशेषाधिकारों की आवश्यकता नहीं होती है।

क्या पूरे आईडीई रन को बढ़ाने के बजाय, जब मैं अपना ऐप चलाता हूं तो ऊंचाई के लिए संकेत देने के लिए डेल्फी प्राप्त करने का कोई तरीका है?

+6

आईडीई को प्रशासक के रूप में शुरू करने में क्या गलत है जब आपको * उस * एप्लिकेशन के लिए काम करने की आवश्यकता है और दूसरों पर काम करते समय इसे सामान्य उपयोगकर्ता के रूप में शुरू करना है? यही तो मैं करता हूं! –

+0

@ कॉस्मीन, धन्यवाद। ऐसा लगता है कि यह सबसे अच्छा तरीका हो सकता है। – Roddy

+1

यह सामान्य व्यवहार है, डीबगर उन्नत डीबग को डीबग नहीं कर सकता है, deb * डीबगिंग सत्र शुरू करने से पहले * ऊंचा होना चाहिए। –

उत्तर

7

कोई भी नहीं है, यह भी वी.एस. लिए काम नहीं करता:

https://stackoverflow.com/questions/3265787/how-do-i-debug-an-process-as-elevated-with-visual-studio-2008-sp1-on-windows-7

मुझे लगता है कि आप ऊपर उठाया दूरस्थ डीबगर चलाने के लिए और हालांकि दूरस्थ डीबगिंग का उपयोग करने आईडीई देते हैं सकता है।

यह काम नहीं करता है, क्योंकि प्रक्रिया किसी अन्य उपयोगकर्ता (या किसी अन्य उपयोगकर्ता टोकन का उपयोग करके) चल रही है।

आईडीई डिबगिंग प्रक्रिया CreateProcess का उपयोग कर भागने की कोशिश कर रहा है और यह काम नहीं करता जब आवेदन elavation की आवश्यकता है, अधिक जानकारी के इस लेख में पाया जा सकता है:

http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx

रेड स्टूडियो ShellExecute का उपयोग कर आवेदन चला सकते हैं "रनस" क्रिया के साथ, लेकिन यह अभी भी "अन्य उपयोगकर्ता संदर्भ के तहत डीबगिंग प्रक्रिया" समस्या को हल नहीं करता है।

दूसरे शब्दों में: एक उन्नत प्रक्रिया को केवल एक विलुप्त डीबगर द्वारा डीबग किया जा सकता है।

संपादित करें:

डेल्फी XE2 आईडीई 32-बिट है और केवल दूरस्थ डीबगर (जो चतुराई से उपयोगकर्ता से छिपा हुआ है) के माध्यम से 64 बिट अनुप्रयोगों डीबग कर सकते हैं।

मुझे लगता है कि एम्बरकाडेरो एक ही फैशन में उन्नत अनुप्रयोगों को डीबग करना संभव बना सकता है।

+0

मुझे यह जवाब नहीं समझा। जैसा कि मैंने इसे पढ़ा है, आप यह कह रहे हैं कि आईडीई बढ़ने पर भी, यह एक आवश्यक प्रशासक के साथ एक प्रक्रिया को डीबग नहीं कर सकता है। क्या मैं आपको सही ढंग से समझ रहा हूँ? मुझे नहीं लगता कि मैं आपको सही ढंग से समझ सकता हूं क्योंकि वह कथन गलत है। –

+1

@ डेविड: मैंने कहा ** डीबगिंग आवेदक ** आईडीईई _by_ बढ़ाया जा सकता है, लेकिन फिर आईडीई अभी भी एप्लिकेशन से संलग्न नहीं हो सकता है। मैंने स्पष्ट वाक्य को स्पष्ट करने के लिए संपादित किया। –

+1

तो आपका उत्तर उबलाया जा सकता है "एक उन्नत प्रक्रिया केवल एक उन्नत डीबगर द्वारा डीबग किया जा सकता है"? क्या वो सही है? –

4

इस तरह के ऐप को डीबग करने का एकमात्र तरीका आईडीई को व्यवस्थापक के रूप में चलाने के लिए है। मैं नियमित रूप से डीबगिंग सत्रों के लिए यह नियमित रूप से करने की अनुशंसा नहीं करता।

+0

यदि व्यावहारिक है तो आपको एप्लिकेशन को दो अलग-अलग हिस्सों में विभाजित करना चाहिए: एक जो सामान्य "AsInvoker" प्रक्रिया के रूप में चलता है और जिसकी ऊंचाई की आवश्यकता होती है। फिर आपको अन्य प्रक्रिया शुरू करने वाले बटनों पर "यूएसी शील्ड" जोड़ना चाहिए, इस प्रकार यूएसी को कार्यान्वित किया जाना चाहिए। आपको केवल "आवश्यकता प्रशासक" प्रक्रिया को डीबग करने के लिए आईडीई को ऊपर उठाना होगा। –

1

असल में "सामान्य स्तर तक पहुंच" वाली प्रक्रिया से "उच्च स्तरीय पहुंच" वाली प्रक्रिया को डीबग करना संभव हो सकता है।

कम से कम विंडोज एक्सपी तक Debugger Users समूह में आपके उपयोगकर्ता खाते को जोड़ने की प्रक्रिया को डीबग करने के लिए पर्याप्त है उदा। Administrator विशेषाधिकारों के साथ।

यह प्रक्रिया को चलाने के लिए डेल्फी 2010 की समस्या को हल नहीं करता है, लेकिन यदि आप डीबगर को पहले से चल रहे प्रक्रिया में संलग्न करने का प्रयास करते हैं तो उपयोगी हो सकता है।

मुझे नहीं लगता कि यह यूएसी सक्षम Vista + पर काम करता है, लेकिन मैंने सोचा कि मैं वैसे भी इसका उल्लेख करूंगा। :)

सटीक होना करने के लिए यूएसी टोकन अवधारणा विभाजित को निष्क्रिय SeDebugPrivilege:

http://blogs.msdn.com/b/greggm/archive/2006/03/30/565303.aspx

http://blogs.msdn.com/b/mithuns/archive/2006/04/04/568291.aspx

11

यूएसी भी शब्द "सेटअप", "अद्यतन" या "है कि किसी भी आवेदन पकड़ता "उनके नाम या संस्करण संसाधन क्षेत्रों में से कई में स्थापित करें। (कंपनी का नाम, ऐप का नाम, विवरण इत्यादि। यह किसी भी ऐसे अनुप्रयोग को संभावित "इंस्टॉलर" एप्लिकेशन मानता है और इसलिए इसे व्यवस्थापकीय विशेषाधिकारों के साथ चलाया जाना चाहिए।

पागल लगता है, लेकिन यह सच है। "इंस्टॉलर डिटेक्शन" देखें इस document में अनुभाग।

आप एक प्रकट है कि कहना है कि यह व्यवस्थापक विशेषाधिकारों की जरूरत नहीं है को शामिल करके इस के आसपास मिल सकती है।

+2

स्टैक ओवरफ्लो, @ फिल में आपका स्वागत है। क्या आपने वास्तव में सवाल पढ़ा था? आपका उत्तर क्या पूछा जा रहा है उससे असंबंधित दिखता है। – jachguate

+0

मैं आपका पॉइंट देखता हूं। मैं यूएसी के बारे में संबंधित जानकारी जोड़ रहा था क्योंकि किसी ने उस विषय को लाया था। यह वास्तव में सवाल नहीं है। क्षमा याचना। –

+0

माफी माँग मत, यह एक बहुत ही अलग सवाल के लिए एक अच्छा जवाब है। इसलिए विचार है कि विशिष्ट प्रश्नों के विशिष्ट उत्तर हैं, इसलिए "संबंधित सामान" जमा करने के लिए वास्तव में यहां लक्ष्य नहीं है और हमारे पास ऐसा करने के लिए Google है;) – jachguate

1

भागो डेल्फी (कोई भी संस्करण) प्रशासक के रूप में।

आप बदल सकते हैं डेल्फी शॉर्टकट गुण भी (इसे हमेशा प्रशासक के रूप में चलाने के लिए ator)।