6

そのユーザーがマシンのドメインユーザーまたはローカルユーザー(.NETを使用することをお勧めします)であるかどうかを確認できるようにしたいのですが、ネット上でこれについて多くを見つけることができます

public static Boolean isLocalUser (string name)
{
//code here
}

たとえば、編集すると、 me.user が文字列として与えられます

4

4 に答える 4

4
public bool DoesUserExist(string userName)
{
    bool exists = false;
    try
    {
    using (var domainContext = new PrincipalContext(ContextType.Domain, "DOMAIN"))
    {
        using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
        {
            exists = true;
        }
      }
    }
    catch(exception ex)
    {
      //Exception could occur if machine is not on a domain
    } 
    using (var domainContext = new PrincipalContext(ContextType.Machine))
    {
        using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
        {
            exists = true;
        }
    }
   return exists;
}

ソース: C# を使用して Active Directory に UserID が存在することを確認する

于 2012-10-03T14:18:02.290 に答える
4

私にとって、これはこれまでのところ非常にうまく機能しています。(使い物は捨てました)。

bool IsLocalUser(string accountName)
{
  var domainContext = new PrincipalContext(ContextType.Machine);
  return Principal.FindByIdentity(domainContext, accountName) != null;
}

ただし、これは「システム」アカウントを認識しないことに注意してください。常にローカル アカウントであるため、個別に確認します。

于 2014-03-26T15:12:30.173 に答える
3

デビッドは、現在のユーザーがドメインの一部であるかどうかを確認するためにお金を払っています。これを確認してEnvironment.UserDomainName、これを現在のユーザーと比較できます。

MSDNでもう少し情報を得る

于 2012-10-03T14:18:05.817 に答える
1

ローカル ユーザーのアカウント名には、マシン名のプレフィックスが付きます。ドメイン ユーザーのアカウント名には、元のドメインがプレフィックスとして付けられます。コンピューター名とアカウントのプレフィックス名が一致しない場合、またはアカウント名のプレフィックスがローカル コンピューターと一致する場合は、通常、ローカル アカウントであると想定しても安全です。

于 2012-10-03T14:13:53.227 に答える