c# - स्थानीय उपयोगकर्ता खाता बनाना सी#और.NET 2.0




account (2)

मैं .NET 2.0 और c # का उपयोग करके स्थानीय उपयोगकर्ता खाते कैसे बना सकता हूं और कभी भी "कभी भी पासवर्ड समाप्त नहीं होने" को सेट करने में सक्षम हो सकता है

मैंने "Net.exe" प्रक्रिया का उपयोग करने का प्रयास किया है। प्रारंभ करें और उसके मापदंडों को पारित करें, लेकिन ऐसा लगता है कि "शुद्ध उपयोगकर्ता" कभी भी "पासवर्ड कभी नहीं समाप्त हो सकता है" सेट करने में असमर्थ है


यह कोड पासवर्ड के साथ एक स्थानीय खाता बना देगा, कभी भी विकल्प सेट नहीं समाप्त होगा:

        using System.DirectoryServices;

        DirectoryEntry hostMachineDirectory = new DirectoryEntry("WinNT://localhost");
        DirectoryEntries entries = hostMachineDirectory.Children;
        bool userExists = false;
        foreach (DirectoryEntry each in entries)
        {
            userExists = each.Name.Equals("NewUser",  
            StringComparison.CurrentCultureIgnoreCase);
            if (systemtestUserExists)
                break;
        }

        if (false == userExists)
        {
            DirectoryEntry obUser = entries.Add("NewUser", "User");
            obUser.Properties["FullName"].Add("Local user");
            obUser.Invoke("SetPassword", "[email protected]");
            obUser.Invoke("Put", new object[] {"UserFlags", 0x10000});
            obUser.CommitChanges();
        }

0x10000 ध्वज का मतलब पासवर्ड कभी भी संभव नहीं है।

मैंने एक लंबा समय व्यतीत किया है कि कैसे एक स्थानीय उपयोगकर्ता खाता बनाने के लिए पासवर्ड का समय समाप्त होने पर सेट नहीं किया जाए ऐसा लगता है कि जब आप उपयोग करने का प्रयास करते हैं:

int val = (int)newUser.Properties["userAccountControl"].Value; 
newUser.Properties["userAccountControl"].Value = val | 0x10000

सक्रिय निर्देशिका से अनुमतियां खेलने में आती हैं यदि आपके पास सक्रिय निर्देशिका अनुमतियां हैं तो सबकुछ ठीक काम करता है यदि आप तब उपयोगकर्ता एकॉंट कंट्रोलिंग प्रॉपर्टी नहीं प्राप्त करते हैं, तो हमेशा एक रिक्त मान होता है UserAccountControl सेट करने की कोशिश में एक अपवाद होगा "निर्देशिका संपत्ति को कैश में नहीं मिल सकता है"

हालांकि बहुत अधिक शिकार के बाद मुझे एक अन्य प्रॉपर्टी "यूजरफ्लैग्स" मिली, जिसे इनवेक का इस्तेमाल करके सेट करना चाहिए। आप इसका उपयोग स्थानीय खाते पर ध्वज सेट करने के लिए कर सकते हैं। मैंने इस कोड की कोशिश की है और यह विंडोज सर्वर 2008 पर काम किया है।

उम्मीद है की यह मदद करेगा


System.DirectoryServices का उपयोग कर;

    DirectoryEntry hostMachineDirectory = new DirectoryEntry("WinNT://localhost");
    DirectoryEntries entries = hostMachineDirectory.Children;
    bool userExists = false;
    foreach (DirectoryEntry each in entries)
    {
        userExists = each.Name.Equals("NewUser",  
        StringComparison.CurrentCultureIgnoreCase);
        if (systemtestUserExists)
            break;
    }

    if (false == userExists)
    {
        DirectoryEntry obUser = entries.Add("NewUser", "User");
        obUser.Properties["FullName"].Add("Local user");
        obUser.Invoke("SetPassword", "[email protected]");
        obUser.Invoke("Put", new object[] {"UserFlags", 0x10000});
        obUser.CommitChanges();




account