Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了更快地找出用户是否存在于系统上?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个应用程序,检查用户是否存在(如果不创build它)每次启动。 这是如下完成的:

bool bUserExists = false; DirectoryEntry dirEntryLocalMachine = new DirectoryEntry("WinNT://" + Environment.Machinename + ",computer"); DirectoryEntries dirEntries = dirEntryLocalMachine.Children; foreach (DirectoryEntry dirEntryUser in dirEntries) { bUserExists = dirEntryUser.Name.Equals("UserName",StringComparison.CurrentCultureIgnoreCasE); if (bUserExists) break; }

问题出现在大部分部署的系统上。 这可能需要6 – 10秒,这是太长了…我需要find一种方法来减less(尽可能)。 有没有更好或更快的方式来validation用户是否存在于系统上?

我知道还有其他的方法可以解决这个问题,就像其他的应用程序睡了10秒,或者准备好后这个工具会发送一个消息,等等。但是如果我能够大大减lessfind用户的时间,这会让我的生活变得更轻松。

在Java或命令行实用工具中使用本机SSPI API获取服务的Kerberos票据有没有办法?

将button添加到Windows 7login屏幕

如何使用连接Windows通孔LDAP

从Active Directory获取用户的组成员身份

如何检查Windows机器join的Azure AD域的名称

单点login/ Windows身份validation入门

validation域用户凭据

有没有办法使引用追逐UserPrincipal.FindByIdentity()?

如何避免使用MSI安装程序对同一产品进行多次安装/修复

查找Active Directory组的所有者

.NET 3.5支持System.Directoryservices.AccountManagement命名空间下的新AD查询类。

要使用它,您需要添加“System.Directoryservices.AccountManagement”作为参,并添加using语句。

using System.Directoryservices.AccountManagement; using (PrincipalContext pc = new PrincipalContext(ContextType.MachinE)) { UserPrincipal up = UserPrincipal.FindByIdentity( pc,IdentityType.SamAccountName,"UserName"); bool UserExists = (up != null); }

<.NET 3.5

对于3.5以前版本的.NET,这里是一个干净的例子,我在dotnet-snippets上找到

DirectoryEntry dirEntryLocalMachine = new DirectoryEntry("WinNT://" + Environment.Machinename + ",computer"); bool UserExists = dirEntryLocalMachine.Children.Find(userIdentity,"user") != null;

你想使用DirectorySearcher。

像这样的东西:

static bool userexists( String strUserName ) { String adsPath = String.Format( @"WinNT://{0}",System.Environment.Machinename ); using( DirectoryEntry de = new DirectoryEntry( adsPath ) ) { try { return de.Children.Find( strUserName ) != null; } catch( Exception e ) { return false; } } }

这应该更快。 此外,如果您正在检查是否存在,则可以减少属性

如果“用户名”存在,则命令提示符中的以下内容将返回1。

网络用户| 找到“用户名”/ c

这应该做到这一点(当你不能使用System.Directoryservices.AccountManagement):

static bool userExists(String sUser) { using (var oUser = new DirectoryEntry("WinNT://" + Environment.Machinename + "/" + sUser + ",user")) { return (oUser != null); } }

大佬总结

以上是大佬教程为你收集整理的更快地找出用户是否存在于系统上?全部内容,希望文章能够帮你解决更快地找出用户是否存在于系统上?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: