2009-07-22 10 views
30

क्या मेरे कोड को एक अलग उपयोगकर्ता के रूप में चलाने के लिए कोई तरीका है?एक अलग उपयोगकर्ता के रूप में चलाने कोड (सी #)

मैं NetUserSetInfo को एक PInvoke के माध्यम से कॉल कर रहा हूं और मुझे इसे एक अलग उपयोगकर्ता के रूप में कॉल करने की आवश्यकता है। क्या ऐसा करने के लिए कोई रास्ता है?

उत्तर

26

प्रतिरूपण कुछ देशी एपीआई (यानी, LogonUser) बुला की आवश्यकता है, तो यह शायद का 3 पृष्ठ पोस्टिंग के लायक नहीं है रैपर कोड। इस पृष्ठ में एक पूर्ण कार्य नमूना है: http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/

ध्यान दें कि प्रतिरूपण महत्वपूर्ण सुरक्षा विचारधारा है। सुनिश्चित करें कि आप सर्वोत्तम प्रथाओं का पालन करें।

10

यह article बहुत संक्षेप में यह बताते हैं:

यहाँ लेख से एक कोड का टुकड़ा है:

IntPtr accessToken = IntPtr.Zero; 
.... 
//You have to initialize your accessToken with API calling 
.... 
WindowsIdentity identity = new WindowsIdentity(accessToken); 
WindowsImpersonationContext context = identity.Impersonate(); 
... 
// Now your code is using the new WindowsLogin and you can do what ever this login can do 
... 

//Now you can return to your current login of Windows 
context.Undo(); 
+2

लेख में कोड चला गया है। –

20

शायद सबसे अच्छा और साफ code है कि मैं अब तक देखा है इस

using (Impersonation.LogonUser(domain, username, password, logonType)) 
{ 
    // do whatever you want as this user. 
} 

बस Github या Nuget का पालन करें।

+1

यह निश्चित रूप से कार्यान्वित करना आसान था लेकिन मैं मान्य नहीं कर सकता कि यह काम कर रहा है। मैं एक प्रक्रिया करता हूं। स्टार्ट ("cmd.exe") और प्रक्रिया अभी भी आईडी के स्वामित्व के रूप में दिखाती है जिसने प्रोग्राम को प्रतिरूपित आईडी नहीं बनाया है। मैं क्या लापता हो सकता है? –

0

हाँ प्रतिरूपण कुछ उपयोगकर्ता को अलग-अलग उपयोगकर्ता के रूप में चलाने में मदद करता है। यह मेरे मामले में ठीक काम करता है। (मिलान Matějka के लिए धन्यवाद)

मुझे एक रेफरी लिंक भी मिला। उम्मीद है कि यह आपको आसानी से पैकेज से प्राप्त करने में मदद करेगा: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html

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

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