调用Windows安全中心实现登录验证

news2024/9/24 1:23:29

文章目录

  • 运行效果
  • 用到的运行库
  • 代码实现
    • 使用日志
    • Win10 Flat风格
    • XP风格
  • 总结

运行效果

Win10风格
XP风格

输入用户名和密码点击确定后获取到的信息:
打印信息

用到的运行库

NuGet搜索安装即可

  • Kang.ExtendMethod
  • Kang.ExtendMethod.Log

https://gitee.com/haozekang/kang

  • Vanara.PInvoke

https://github.com/dahall/Vanara/

代码实现

使用日志

readonly Logger logger = LogManager.GetCurrentClassLogger();

Win10 Flat风格

CredUI.CREDUI_INFO info = new CredUI.CREDUI_INFO();
info.pszCaptionText = "登录大伽";
info.pszMessageText = "欢迎使用大伽智能病理系统";
info.cbSize = Marshal.SizeOf(info);
uint pulAuthPackage = 0, ulInAuthBufferSize = 0, pulOutAuthBufferSize;
IntPtr pvInAuthBuffer = IntPtr.Zero, ppvOutAuthBuffer = IntPtr.Zero, pAuthBuffer = IntPtr.Zero;
bool isSave = false;
int maxUnSize = 50, maxPwSize = 50, maxDomSize = 50;
StringBuilder un = new StringBuilder(maxUnSize), pw = new StringBuilder(maxPwSize), dom = new StringBuilder(maxDomSize);

var error = CredUI.CredUIPromptForWindowsCredentials(info, Win32Error.NO_ERROR, ref pulAuthPackage, pvInAuthBuffer, ulInAuthBufferSize, out ppvOutAuthBuffer, out pulOutAuthBufferSize, ref isSave, CredUI.WindowsCredentialsDialogOptions.CREDUIWIN_GENERIC);
if (error == Win32Error.ERROR_CANCELLED)
{
    logger.Debug($"{error}");
    return;
}
if (error != Win32Error.ERROR_SUCCESS)
{
    logger.Debug($"{error}");
    return;
}
var flag = CredUI.CredUnPackAuthenticationBuffer(CredUI.CredPackFlags.CRED_PACK_GENERIC_CREDENTIALS, ppvOutAuthBuffer, (int)pulOutAuthBufferSize, un, ref maxUnSize, dom, ref maxDomSize, pw, ref maxPwSize);
if (un.ToString().IsBlank())
{
    logger.Debug($"用户名不能为空!");
    return;
}
if (pw.ToString().IsBlank())
{
    logger.Debug($"密码不能为空!");
    return;
}
if (!flag)
{
    logger.Debug($"获取用户名及密码信息失败!");
    return;
}
logger.Debug($"用户名:{un}    密码:{pw}");

XP风格

CredUI.CREDUI_INFO info = new CredUI.CREDUI_INFO();
info.pszCaptionText = "登录大伽";
info.pszMessageText = "欢迎使用大伽智能病理系统";
info.cbSize = Marshal.SizeOf(info);
IntPtr Reserved = IntPtr.Zero;
bool isSave = false;
int maxUnSize = 50, maxPwSize = 50;
StringBuilder un = new StringBuilder(maxUnSize), pw = new StringBuilder(maxPwSize);

var error = CredUI.CredUIPromptForCredentials(info, "www.dakapath.com/dakapath", Reserved, Win32Error.NO_ERROR, un, 10, pw, 10, ref isSave, CredUI.CredentialsDialogOptions.CREDUI_FLAGS_DEFAULT);

总结

  1. Win10风格的那个,取到的不是明文,是一个加密后的Pack,需要使用Windows自带的方法进行解密才可以拿到真实的用户名和密码,而XP风格的那个,是直接取到明文;
  2. 不想画登录界面的,对登录界面要求比较简单,又想自己的程序登录起来有点逼格的可以用Win10的那个(⊙o⊙)…;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全算法 - 国密算法

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4,SM7, SM9。国密算法分类国家标准官方网站如下:http://openstd.samr.gov.cn/bzgk/gb/SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用…

Nacos——配置管理基础应用

目录 一、快速入门 1.1 发布配置 1.2 nacos client远程获取配置 1.2.1 导入坐标 1.2.2 程序代码 二、Nacos配置管理基础应用 2.1 Nacos配置管理模型 2.1.2 配置集(Data Id) 2.1.3 配置项 2.1.4 配置分组 (Group) 2.1.5 命名空间(Namespace) 2.1.6 最佳实践&#xff0…

Worok:专门针对亚洲实体的网络间谍组织

ESET 的研究人员发现了一个全新的攻击组织 Worok,该组织自动 2020 年就一直处于活跃状态。Worok 使用的工具集包括一个 C 编写的加载程序 CLRLoad、一个 PowerShell 编写的后门 PowHeartBeat 和一个 C# 编写的加载程序 PNGLoad,攻击者使用隐写术来提取隐…

PPT与Inkscape自定义色板

PPT与Inkscape自定义色板简述 本文主要分享了PPT与Inkscape中自定义色板功能,以满足个性化配色需求。此外,文末分享了常见的配色网站和图片网站,前者可以满足配色需求,后者可以满足配图需求。 PPT自定义色板 在常见的办公三件套中…

pycharm远程连接服务器,并单步调试服务器上的代码

每天都有不同的朋友来Push我 那如果比较健忘的话,为啥不问一下chatGPT呢 问题的缘由在我想在本地单步调试代码。。。 我的代码完全在云端服务器的,还有数据集都是,但实际上本地代码可以通过pycharm给他传上去。 但是在后面配置的时候需要两…

高密度部署,基于动态库的尝试,rust动态调库

目录前言faas特点方案思考实践制作动态库调用动态库尾语前言 最近在搞faas平台,也试了各大云厂商的产品,效果都不是很理想。和我心目中的faas想去甚远。  和小伙伴们吹完牛逼,心有所感,写下这篇文章,时间跨度较长&…

「AI人工智能」Node.js如何接入OpenAI开发

文章目录前言一、创建OpenAI账号二、安装axios 库三、导入 axios 库四、调用 OpenAI API五、测试 OpenAI API前言 本文主要介绍如何将 Node.js 应用程序与 OpenAI 集成,可以使用 OpenAI API。 一、创建OpenAI账号 创建一个 OpenAI 帐户并注册 API 密钥。你可以在 …

Linux系统一键检测和加固脚本

主要是为了Linux系统的安全,通过脚本对Linux系统进行一键检测和一键加固。 Check_Script #包含2个文件 CentOS_Check_Script.sh README.txt 操作说明 #执行CentOS-Check_Script.sh脚本文件进行检查,命令格式如下 sudo sh CentOS_Check_Script.sh | tee check_da…

Spring Boot 2.x系列【28】应用篇之JAVA执行服务器操作命令

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本2.7.0 文章目录前言本地服务器远程服务器前言 在某些实际开发场景中,我们需要调用JAVA程序去执行一些服务器操作命令,比如: 获取服务器的CPU…

牛逼的不停服定位线上问题-arthas

​ Hello,大家好我是你们可爱的小花。 前言 你是不是为了生产环境问题,无法定位、无法中断、无法解决 项目无故异常,日志无报错、报错不够明确 测试环境无法复现、生产环境问题偶发 但重启项目后问题消失,无法给领导一个答复而苦…

ChatGPT冷观察:没有大模型的土壤,开不出ChatBot的花

文|智能相对论作者|叶远风谁在跟风,谁又有真本事能做出中国版的对标产品来?这恐怕是ChatGPT这股热潮以来,关心中国AI发展的业界人士最想问的问题。或者说,在中国人工智能不落后于全世界的当下,业界也在普遍渴望一个真正…

AWS Directory Service

Hello大家好,我们接下来讨论AWS Directory Service,AWS目录服务的内容。 什么是微软活动目录(AD) 在认证考试中有很多的考点是关于微软AD部分的,也就是微软活动目录以及AWS活动目录服务—AWS Directory Service的内容…

PowerShell Install Mysql 8

MySQL介绍 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 mysql download Mysql Serverdownload创建一键安装Mysql 8自动化脚本 Expand-Archive #解压文件Start-P…

【我有一个梦想:帮你实现你的梦想】

很多人都曾有过这样的经历,某天突然对某个东西产生了兴趣,于是兴致勃勃的开始在网上各种搜,各种查,去各大论坛到处看到处问,在网上搜集很多免费的电子书,看了很多视频,最后忙活了一阵子&#xf…

若依框架如何新增自定义主题风格

若依框架新增主题风格1.实现结果2.实现步骤2.1Settings目录下2.2 variables.scss2.3 sidebar.scss2.4 Logo.vue2.5 Siderbar目录下的index.vue1.实现结果 2.实现步骤 需要改动的文件目录&#xff1a; 2.1Settings目录下 <div class"setting-drawer-block-checbox-it…

DBeaver:开源、跨平台、强大的数据库管理工具

文章目录一、简介1.DBeaver 是什么2.DBeaver 的功能3.DBeaver 的优点二、安装与配置1.系统要求2.下载与安装3.连接数据库三、总结一、简介 1.DBeaver 是什么 DBeaver 是一个流行的开源数据库客户端&#xff0c;它可以用于连接和管理多种不同类型的数据库系统&#xff0c;包括…

什么是STAR原则?

文章目录&#x1f4cb;前言&#x1f525;省流版&#x1f3af;什么是STAR原则&#x1f3af;进行过程&#x1f4cb;前言 对于大部分还在学习阶段的学生们来说&#xff0c;可能并不了解这个原则的含义&#xff0c;这里的star并不是指英文单词星星。这个原则我也是前段时间才认识到…

CS224W课程学习笔记(二):网络图的特征说明和指标实战

引言 在第二三节课中&#xff0c;主要研究的是四个关键网络属性以表征图形&#xff1a;度分布&#xff0c;路径长度&#xff0c;聚类系数和连接组件 。 这些定义主要是针对无向图的&#xff0c;而由于上一节中已经介绍了度分布&#xff0c;以及相应公式和例题&#xff0c;关于…

刚性电路板的特点及与柔性电路板的区别

打开市场上的任何一个电子产品&#xff0c;会发现里面都有一块或多块电路板。电路板是电子产品运行的核心&#xff0c;之前沐渥小编已经给大家介绍了柔性电路板&#xff0c;下面给大家介绍刚性电路板的基础知识。 刚性电路板俗称硬板&#xff0c;是由不容易变形的刚性基材制成的…

MASA Stack 1.0 发布会 —— 社区问题解答

MASA Stack 1.0 圆桌讨论 Q1&#xff1a; 全职开源的团队&#xff0c;你们的收入是什么&#xff1f; 1.首先感谢我们的金主朗诗德公司&#xff0c;朗诗德是一家大型的净水器研发、生产、销售的公司&#xff0c;我们的产品也在朗诗德公司进行了大量的落地验证&#xff0c;再次…