创建本地用户账户c#和.NET2.0如何使用.NET2.0和c#创建本地用户账户,并且还可以“密码”永不过期”设置为永不。我尝试使用“Net.exe”使用Process.Start并传递其参数,但似乎“NetUser”无法将“密码永不过期”设置为永不。阅读这篇优秀的CodeProject文章Howto:(几乎)ActiveDirectory中的所有内容都通过C#有一个“创建用户帐户”和“处理用户密码”部分。更新:要修改本地帐户的代码,请将相应的行替换为以下代码:DirectoryEntrylocalMachine=newDirectoryEntry("WinNT://"+Environment.MachineName);DirectoryEntrynewUser=localMachine.Children.Add("localuser","user");下面是启动域帐户的原始代码片段:publicstringCreateUserAccount(stringldapPath,stringuserName,stringuserPassword){stringoGUID=string.Empty;尝试{stringconnectionPrefix="LDAP://"+ldapPath;DirectoryEntrydirEntry=newDirectoryEntry(connectionPrefix);DirectoryEntrynewUser=dirEntry.Children.Add("CN="+userName,"user");newUser.Properties["samAccountName"].Value=userName;intval=(int)newUser.Properties["userAccountControl"].Value;newUser.Properties["userAccountControl"].Value=val|0x10000;newUser.CommitChanges();oGUID=newUser.Guid.ToString();newUser.Invoke("SetPassword",newobject[]{userPassword});newUser.CommitChanges();dirEntry.Close();newUser.Close();}catch(System.DirectoryServices.DirectoryServicesCOMExceptionE){//做Somethingwith-->E.Message.ToString();}返回oGUID;}在处理用户密码和密码边界的时候,需要知道一些细节,比如强制用户下次登录修改密码,拒绝用户修改自己的密码,设置密码永远不过期,什么时候过期,这些可以使用前几节中演示的UserAccountControl标志来完成任务请参阅这篇精彩的MSDN文章:管理用户密码以获取有关这些功能的示例和文档。CONSTHEX------------------------------------------SCRIPT0x0001ACCOUNTDISABLE0x0002HOMEDIR_REQUIRED0x0008LOCKOUT0x0010PASSWD_NOTREQD0x0020PASSWD_CANT_CHANGE0x0040ENCRYPTED_TEXT_PWD_ALLOWED0x0080TEMP_DUPLICATE_ACCOUNT0x0100NORMAL_ACCOUNT0x0200INTERDOMAIN_TRUST_ACCOUNT0x0800WORKSTATION_TRUST_ACCOUNT0x1000SERVER_TRUST_ACCOUNT0x2000DONT_EXPIRE_PASSWORD0x10000MNS_LOGON_ACCOUNT0x20000SMARTCARD_REQUIRED0x40000TRUSTED_FOR_DELEGATION0x80000NOT_DELEGATED0x100000USE_DES_KEY_ONLY0x200000DONT_REQ_PREAUTH0x400000PASSWORD_EXPIRED0x800000TRUSTED_TO_AUTH_FOR_DELEGATION0x1000000此代码将创建一个本地帐户,密码永不过期选项集:使用System.DirectoryServices;DirectoryEntryhostMachineDirectory=newDirectoryEntry("WinNT://localhost");DirectoryEntries条目=hostMachineDirectory.Children;booluserExists=false;foreach(DirectoryEntryeachinentries){userExists=each.Name.Equals("NewUser",StringComparison.CurrentCultureIgnoreCase);如果(系统测试用户存在)中断;}if(false==userExists){DirectoryEntryobUser=entries.Add("NewUser","User");obUser.Properties["FullName"].Add("本地用户");obUser.Invoke("设置密码","abcdefg12345@");obUser.Invoke("Put",newobject[]{"UserFlags",0x10000});obUser.CommitChanges();0x10000标志表示PasswordNeverExpires我花了很长时间才弄清楚如何创建一个密码设置不过期的本地用户帐户。似乎当您尝试使用时:intval=(int)newUser.Properties["userAccountControl"].Value;newUser.Properties["userAccountControl"].Value=val|0x10000来自活动目录的权限开始发挥作用。如果您具有活动目录权限,则一切正常。如果不是,则获取userAccountControl属性将始终导致空值。尝试设置userAccountControl将导致异常“无法在缓存中找到目录属性”。然而,经过多次搜索,我发现需要使用Invoke设置另一个属性“UserFlags”。您可以使用它来为本地帐户设置标志。我试过这段代码,它适用于WindowsServer2008。希望这有助于使用System.DirectoryServices;以上就是《C#学习教程:创建本地用户账户c#与.NET2.0》的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——DirectoryEntryhostMachineDirectory=newDirectoryEntry("WinNT://localhost");DirectoryEntries条目=hostMachineDirectory.Children;booluserExists=false;foreach(DirectoryEntryeachinentries){userExists=each.Name.Equals("NewUser",StringComparison.CurrentCultureIgnoreCase);如果(系统测试用户存在)中断;}if(false==userExists){DirectoryEntryobUser=entries.Add("NewUser","User");obUser.Properties["FullName"].Add("本地用户");obUser.Invoke("设置密码","abcdefg12345@");obUser.Invoke("Put",newobject[]{"UserFlags",0x10000});obUser.CommitChanges();本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
