2012-08-14 9 views
6

मैं एक सी # अनुप्रयोग विकसित कर रहा हूं जिसे यह पता लगाने की आवश्यकता है कि उपयोगकर्ता उन्नत व्यवस्थापक के रूप में चल रहा है या नहीं। मैंने स्टीवन द्वारा सुझाए गए solution की कोशिश की।पता नहीं लगा सकता कि कोई उपयोगकर्ता ऊंचा विशेषाधिकारों के साथ चल रहा है, जब कोई यूएसी पॉपअप

मैंने 5 मशीनों पर समाधान की जांच की और यह 4 में से ठीक काम करता है।

ऐसी मशीन है जो यूएसी अधिसूचना संदेश कभी नहीं दिखाती है, भले ही मैं उपयोगकर्ता खाता नियंत्रण Always notify me पर सेट करता हूं।

उस मशीन पर कोड की जांच करते समय, भले ही मैं run as administrator चुनूं, यह काम नहीं करता है और विधि IsProcessElevated गलत लौटाती है।

क्या उस विशिष्ट मशीन के साथ कुछ गलत है?

क्या यह निर्धारित करने का कोई तरीका है कि कोई उपयोगकर्ता ऊंचा हो या नहीं, उस तरह के मंच पर?

+0

मैं जांचता हूं कि मशीनों में सभी नवीनतम सर्विस पैक आदि हैं और फिर पुन: प्रयास करें। –

+0

यूएसी की जांच करने के लिए कुछ वैकल्पिक समाधान हैं [यहां] (http://stackoverflow.com/questions/95912/how-can-i-detect-if-my-process-is-running-uac-elevated-or-not)। क्या उनमें से किसी एक को आजमाकर देखना है कि क्या यह काम करता है? – Default

+1

यह मुझे लगता है कि उस कंप्यूटर के साथ कुछ गड़बड़ है, कोड नहीं। यदि आप स्पष्ट रूप से इसे संकेत देने के लिए कॉन्फ़िगर करते हैं तो आपको यूएसी संकेत मिलना चाहिए। तुम नहीं। यह सिस्टम के साथ एक समस्या को इंगित करता है। –

उत्तर

10

एक अनुसंधान के बाद मुझे पता चला कि विंडोज 7 से और पर निर्धारित करने के लिए एक उपयोगकर्ता एक ऊंचा व्यवस्थापक है कि क्या है या नहीं आप बस अनुसरण कर जांच करने की आवश्यकता:

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
return principal.IsInRole (WindowsBuiltInRole.Administrator); 

(कोड के बाकी जो इस विकल्प को विफल होने पर टोकन की जांच की जा सकती है) मैंने कुछ मशीनों पर कोड का परीक्षण किया और यह ठीक काम करता है।

मेरा आवेदन केवल Win7 और ऊपर चलता है, इसलिए यह समाधान मेरे लिए काफी अच्छा है।

+1

+1 अच्छा काम। सवाल यह है कि ओपी लिंक मुझे थोड़ी देर के लिए परेशान कर रहा था जब इसे स्कैन किया गया था क्योंकि यह बहुत ही भ्रामक शीर्षक था। –

+0

यह कोड विंडोज 8.1 पर भी अच्छा काम करता है। – codechurn

0

यह पूछने के लिए मूर्खतापूर्ण हो सकता है, लेकिन यूएसी को हमेशा सूचित करने के बाद, क्या आपने मशीन को पुनरारंभ किया है?

मुझे एक ही समस्या थी और समस्या विंडोज़ में ही थी क्योंकि यूएसी स्थिति तब तक नहीं बदली जब तक आप मशीन को पुनरारंभ नहीं करते।

इसे आज़माएं, और this link और this पर भी देखें।

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

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