使用Windows窗体应用程序自动登录用户?

时间:2011-03-16 06:47:50

标签: .net desktop-application

当我启动一个Windows窗体应用程序时,它会自动从窗口启动时输入的凭据中获取用户名和密码,并自动登录用户。

3 个答案:

答案 0 :(得分:0)

我认为我们不能使用任何API获取Windows密码。

以下是一个可以帮助您的链接

http://support.microsoft.com/kb/813834

答案 1 :(得分:0)

您可以随时查看您是否拥有有效的WindowsIdentity

using System.Security.Principal;

WindowsIdentity currUser = WindowsIdentity.GetCurrent();
if (currUser != null)
{
   string userName = currUser.Name;
}

但正如其他人也说的那样:你将无法检索密码 - 永远不会。

如果要登录SQL Server,可以在连接字符串中定义Integrated Security=SSPI;,并使用当前的Windows身份登录SQL Server。没有密码需要。

答案 2 :(得分:0)

永远不可能提取密码,因为它是一种安全威胁。

根据您编写WinForms应用程序的语言,可能有多种方法可以获取当前登录用户的用户名。

在C#中,你可以这样得到它:

string username = Environment.UserName;
string domain = Environment.UserDomainName;
string fullyQualifiedUsername = domain + "\\" + username;

有了用户名,您就可以假设用户已登录到计算机时已经过身份验证。

因此,您可以通过创建“登录”上面获得的用户的自定义页面来绕过ASP.NET Forms身份验证:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Activities.Statements;

public partial class sso : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string username = Request["username"];
        FormsAuthentication.RedirectFromLoginPage(username, false);
    }
}

然后您可以调用该页面:http://localhost/sso/sso.aspx?username=Varun+Chatterji

免责声明:这是示例代码,不适用于生产。如果您仅使用查询字符串以这种方式实现“登录”,则必须通过sso.aspx中的某种形式的身份验证来保护登录