そのユーザーがマシンのドメインユーザーまたはローカルユーザー(.NETを使用することをお勧めします)であるかどうかを確認できるようにしたいのですが、ネット上でこれについて多くを見つけることができます
public static Boolean isLocalUser (string name)
{
//code here
}
たとえば、編集すると、 me.user が文字列として与えられます
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;
}
私にとって、これはこれまでのところ非常にうまく機能しています。(使い物は捨てました)。
bool IsLocalUser(string accountName)
{
var domainContext = new PrincipalContext(ContextType.Machine);
return Principal.FindByIdentity(domainContext, accountName) != null;
}
ただし、これは「システム」アカウントを認識しないことに注意してください。常にローカル アカウントであるため、個別に確認します。
デビッドは、現在のユーザーがドメインの一部であるかどうかを確認するためにお金を払っています。これを確認してEnvironment.UserDomainName
、これを現在のユーザーと比較できます。
MSDNでもう少し情報を得る
ローカル ユーザーのアカウント名には、マシン名のプレフィックスが付きます。ドメイン ユーザーのアカウント名には、元のドメインがプレフィックスとして付けられます。コンピューター名とアカウントのプレフィックス名が一致しない場合、またはアカウント名のプレフィックスがローカル コンピューターと一致する場合は、通常、ローカル アカウントであると想定しても安全です。