62,074
社区成员
发帖
与我相关
我的任务
分享
你这种问题显然调用windowsAPI效果最好,这里需要调用advapi32.dll的LogonUser方法
示例:
using System.Runtime.InteropServices;
ExampleClass
{
//调用Win32API Import advapi32.dll
[DllImport("advapi32.dll")]
private static extern bool LogonUser( string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
private bool ValidateUserAccount()
{
const int LOGON32_LOGON_INTERACTIVE = 2; //通过网络验证账户合法性
const int LOGON32_PROVIDER_DEFAULT = 0; //使用默认的Windows 2000/NT NTLM验证方
IntPtr tokenHandle = new IntPtr(0);
tokenHandle = IntPtr.Zero;
string domainName=""; //域 如:officedomain
string domainAccount=""; //域帐号 如:administrator
string domainPassword="";//密码
bool checkok = LogonUser(domainName, domainAccount, domainPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
return checkok;
}
}
======================
当然,如果是在web 里,也就是Asp.net中可以通过配置web config来拿到域信息:
1. 在web.config中设置<authentication mode="Windows"/>
2. 在IIS-默认的Web站点-虚拟目录-属性-目录安全性-编辑中选择 "集成Windows验证",注意"匿名访问"一定不要选
3. 在asp.net中使用 User.Identity.Name 就可以得到域名和用户名.