2014-05-20 8 views
5

मैं एक गैर-सहभागी सेवा Windows मशीनों पर एक विशेषाधिकार प्राप्त प्रणाली उपयोगकर्ता के रूप में चल रहा है का उपयोग कर, और मैं इसे एक ऊंचा प्रक्रिया के रूप में दिए गए निष्पादन योग्य शुरू करने की जरूरत है।यूएसी बचना लेकिन एक ऊंचा प्रक्रिया शुरू करने के लिए एक खिड़कियों सेवा

मैंने WTSGetActiveConsoleSessionId() का उपयोग करके सिस्टम सिस्टम के रूप में एक सिस्टम प्रक्रिया लॉन्च करने में कामयाब रहा है, सिस्टम प्रक्रिया ढूंढ रहा है और इसके टोकन को डुप्लिकेट कर रहा है। इसी प्रकार, मैं नियमित उपयोगकर्ता के रूप में एक गैर-उन्नत प्रक्रिया लॉन्च कर सकता हूं। लेकिन मुझे प्रक्रिया को नियमित उपयोगकर्ता के रूप में लॉन्च करने की आवश्यकता है, लेकिन उन्नत विशेषाधिकारों के साथ - ताकि मुझे यूएसी दिखाना पड़े, लेकिन प्रक्रिया उचित उपयोगकर्ता के रूप में चल रही है।

मैं यूएसी को बाईपास करने की कोशिश नहीं कर रहा हूं - चूंकि उपयोगकर्ता पहले से ही सेवा स्थापित करने के लिए सहमत हो गया है। मैं एक असुविधा को कम करने की कोशिश कर रहा हूं। मुझे similar, unanswered question मिला है - लेकिन शायद उत्तर देने की उम्मीद में फिर से पूछा गया।

+0

यह मानते हुए कि आप इंटरैक्टिव उपयोगकर्ता के लिए टोकन प्राप्त करने के लिए WTSQueryUserToken का उपयोग कर रहे हैं, और यह कि इंटरैक्टिव उपयोगकर्ता एक व्यवस्थापक है, तो आप TokenLinkedToken विकल्प के साथ GetTokenInformation का उपयोग करके उन्नत टोकन प्राप्त करने में सक्षम होना चाहिए। –

+0

एक तरफ ध्यान दें पर, यह अपनी खुद की प्रणाली टोकन की प्रतिलिपि और फिर SetTokenInformation और TokenSessionId विकल्प का उपयोग सत्र आईडी बदलकर प्रणाली के रूप में एक बच्चे की प्रक्रिया शुरू करने के लिए संभव है (और अधिक कुशल) होना चाहिए। –

+0

@ हैरीजोहनस्टन विचारों के लिए धन्यवाद! जुड़ा हुआ टोकन विचार ठीक काम करता है। यदि आप इसे किसी उत्तर में परिवर्तित करते हैं, तो मैं इसे स्वीकार किए जाने के रूप में चिह्नित कर सकता हूं। – Liosan

उत्तर

3

आप इंटरैक्टिव उपयोगकर्ता के लिए फ़िल्टर किए गए टोकन है - उदाहरण के लिए, एक WTSQueryUserToken() के माध्यम से लिया गया है - आप TokenLinkedToken विकल्प के साथ GetTokenInformation फ़ंक्शन का उपयोग करके फ़िल्टर नहीं किए गए ("ऊंचा") टोकन प्राप्त कर सकते हैं।

संबंधित मुद्दे