从基于credentails的windows登录到一个管理员帐户的一个管理员帐户我的问题是 iam在我的系统管理员下创建了三个帐户(所有三个在systm管理下创建)。 Account1:admin1 Account2:TestUser1 Account3:TestUser2。 现在iam从每个帐户登录使用c#代码基于该帐户credentails并运行我的c#应用程序。 问题是,当iam从每个帐户登录时,应用程序支持所有帐户credentails。示例现在,iam从TestUser1登录,它通过testuser1 credentails运行良好,但它也支持admin1,TestUser2 credentails。 我的问题是我想登录的基础上,该帐户credentails只有不是从其他两个。我工作的C#窗口应用程序。 此应用程序为多用户创建Shift系统登录和工作从他们自己的帐户。 你好,任何人都可以帮我解决这个问题。如何使用c#.net代码
我登录的代码是
公共部分类FrmLogIn:表 {
[DllImport("ADVAPI32.dll", EntryPoint = "LogonUserW", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
public FrmLogIn()
{
InitializeComponent();
}
private void FrmLogIn_Load(object sender, EventArgs e)
{
foreach (Control ctl in pnlLogin.Controls)
{
if (ctl.TabIndex == 1)
ctl.Focus();
}
}
private void btnOK_Click(object sender,System. EventArgs e)
{
toolStripStatusLabel1.Text = this.showstatus(" Login plz wait Verify the credentails...");
System.Threading.Thread.Sleep(4000);
string domainName = GetDomainName(txtUserName.Text); // Extract domain name form provide DomainUsername e.g Domainname\Username
string userName = GetUsername(txtUserName.Text); // Extract user name from provided DomainUsername e.g Domainname\Username
IntPtr token = IntPtr.Zero;
bool result = LogonUser(userName, domainName, txtPassword.Text, 2, 0, ref token);
if (result)
{
MessageBox.Show("LOGIN SUCCESSFULLY ");
form2 obj = new form2();
obj.Show();
this.Hide();
}
public static string GetDomainName(string usernameDomain)
{
if (string.IsNullOrEmpty(usernameDomain))
{
throw (new ArgumentException("Argument can't be null.", "usernameDomain"));
}
if (usernameDomain.Contains("\\"))
{
int index = usernameDomain.IndexOf("\\");
return usernameDomain.Substring(0, index);
}
else if (usernameDomain.Contains("@"))
{
int index = usernameDomain.IndexOf("@");
return usernameDomain.Substring(index + 1);
}
else
{
return "";
}
}
public static string GetUsername(string usernameDomain)
{
if (string.IsNullOrEmpty(usernameDomain))
{
throw (new ArgumentException("Argument can't be null.", "usernameDomain"));
}
if (usernameDomain.Contains("\\"))
{
int index = usernameDomain.IndexOf("\\");
return usernameDomain.Substring(index + 1);
}
else if (usernameDomain.Contains("@"))
{
int index = usernameDomain.IndexOf("@");
return usernameDomain.Substring(0, index);
}
else
{
return usernameDomain;
}
}