C#实现的WINDOWS登录功能示例

发布时间 - 2026-01-11 02:37:50    点击率:

本文实例讲述了C#实现的WINDOWS登录功能。分享给大家供大家参考,具体如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
using System.Security.Principal;
namespace yutest
{
  public partial class _Default : System.Web.UI.Page
  {
    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
    public static extern bool LogonUser(string lpszUsername,string lpszDomain,string lpszPassword,int dwLogonType,int dwLogonProvider,out int phToken);
    protected void Page_Load(object sender, EventArgs e)
    {
      string aaa = System.Threading.Thread.CurrentPrincipal.Identity.Name;
      //string bbb = System.Threading.Thread.CurrentPrincipal.Identity.n;
      //System.Environment.UserDomainName
      //System.Environment.UserName
    }
    protected void Button1_Click(object sender, System.EventArgs e)
    {
      //验证用户的输入是否为空
      if (tDomain.Text.Trim().Length > 0 && tUserName.Text.Trim().Length > 0&& tPassword.Text.Trim().Length > 0)
      {  //调用函数Login(string UserName, string Password, string Domain)
        //实现Windows登录
        if (Login(tUserName.Text.Trim(), tPassword.Text.Trim(),tDomain.Text.Trim()) == true)
        {  //显示登录成功信息
          LoginMsg.Text = "登录成功!!!";
          LoginMsg.Visible = true;
          return;
        }
        else
        {  //显示登录失败信息
          LoginMsg.Text = "登录失败,请重新输入用户名称、密码及其系统域名!!!";
          LoginMsg.Visible = true;
        }
      }
    }
    private bool Login(string UserName, string Password, string Domain)
    {    //获取用户名称和系统域名
      string text1 = Domain.Trim();
      string text2 = UserName.Trim();
      text2 = text2.Replace("/", @"\");   //处理符号“/”
      int num1 = text2.IndexOf('\\');    //获取符号“\”的索引
      if (num1 != -1)
      {  //格式化用户名称和系统域名
        text1 = text2.Substring(0, num1);
        text2 = text2.Substring(num1 + 1);
      }
      else
      {  //格式化用户名称和系统域名
        num1 = text2.IndexOf('@');
        if (num1 != -1)
        {
          text1 = text2.Substring(num1 + 1);
          text2 = text2.Substring(0, num1);
        }
      }
      //调用函数AuthenticateUser()实现用户Windows登录
      return AuthenticateUser(text2, Password.Trim(), text1);
    }
    private bool AuthenticateUser(string UserName, string Password,string Domain)
    {       //设置用户登录成功的标志
      bool flag1 = false;
      try
      {
        int num1; IntPtr ptr1;
        //调用Windows登录的API
        if (!LogonUser(UserName, Domain, Password, 2, 0, out num1))
        {  //返回登录结果
          return flag1;
        }
        //调用.NET中的Windows登录
        ptr1 = new IntPtr(num1);
        WindowsIdentity identity1 = new WindowsIdentity(ptr1);
        WindowsPrincipal principal1 = new WindowsPrincipal(identity1);
        HttpContext.Current.User = principal1;
        //设置系统Cookie和重定向页面
        FormsAuthentication.SetAuthCookie(principal1.Identity.Name, false);
        FormsAuthentication.RedirectFromLoginPage(UserName, false);
        flag1 = true;
      }
      catch (Exception) { }
      return flag1;
    }
  }
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。


# C#  # WINDOWS  # 登录  # C#实现判断当前操作用户管理角色的方法  # c# 将Minio.exe注册成windows服务  # C#用Topshelf创建Windows服务的步骤分享  # C#开发windows服务实现自动从FTP服务器下载文件  # C#对Windows服务组的启动与停止操作  # C#编写Windows服务程序详细步骤详解(图文)  # C# 屏蔽由于崩溃弹出的windows异常弹框  # 使用C#创建Windows服务的实例代码  # C# WindowsForm程序同时启动多个窗口类  # 使用C#实现Windows组和用户管理的示例代码  # 程序设计  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 用户登录  # 所述  # 使用技巧  # 面向对象  # 为空  # 重定向  # 重新输入  # 讲述了  # bool  # extern  # static  # lpszUsername  # string  # LogonUser 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 黑客如何通过漏洞一步步攻陷网站服务器?  PythonWeb开发入门教程_Flask快速构建Web应用  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  高端云建站费用究竟需要多少预算?  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  怎么用AI帮你设计一套个性化的手机App图标?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  深入理解Android中的xmlns:tools属性  Laravel如何实现模型的全局作用域?(Global Scope示例)  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何实现用户密码重置功能?(完整流程代码)  大型企业网站制作流程,做网站需要注册公司吗?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel如何实现数据库事务?(DB Facade示例)  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  JavaScript数据类型有哪些_如何准确判断一个变量的类型  如何续费美橙建站之星域名及服务?  Laravel如何处理异常和错误?(Handler示例)  如何用VPS主机快速搭建个人网站?  Laravel如何处理表单验证?(Requests代码示例)  Laravel中的Facade(门面)到底是什么原理  网站优化排名时,需要考虑哪些问题呢?  javascript读取文本节点方法小结  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  如何用PHP工具快速搭建高效网站?  中山网站制作网页,中山新生登记系统登记流程?  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel如何配置和使用缓存?(Redis代码示例)  如何将凡科建站内容保存为本地文件?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Bootstrap整体框架之JavaScript插件架构  简单实现jsp分页  公司门户网站制作流程,华为官网怎么做?  微信小程序 input输入框控件详解及实例(多种示例)  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试