搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
不正经
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
DiaKG:用于构建医学知识图谱的糖尿病标注数据集【命名实体识别(NER)和关系抽取(RE)】
2
【部署医药类问答系统QASystemOnMedicalKG】
3
如何下载gitlab项目,master主分支切换分支项目_github如何下载master
4
顶象滑块验证_顶象滑块打码平台
5
【微信小程序开发】字体样式设置_微信小程序字体粗细border
6
ubuntu 免密root权限登录 自动启动脚本程序
7
千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP回环)_vivado udp传输
8
海康摄像头java的二次开发,集成windows和linux两个版本的报警布防_java 海康摄像头入侵检测
9
鸿蒙App基础_deveco ondragstart
10
发现国内三款免费无版权可商用字体,别再傻傻用微软雅黑了!_opposans
当前位置:
article
> 正文
Credential Provider_gina credentialprovider
作者:不正经 | 2024-05-02 03:53:53
赞
踩
gina credentialprovider
Windows操作系统的登录
WinXP利用GINA机制来登录,从Vista开始采用新的登录机制,名为Credential Provider.
在 Windows Vista 之前的环境中,每个会话都有一个 winlogon 实例,它负责控制该会话的交互式登录序列,它运行在Session 0. 计算机上已注册的 GINA 加载到 winlogon 进程空间中。(还可能加载一个称作“GINA 链接”的配置,但测试和支持这样的复杂配置很困难。)最后,GINA 调用 LogonUser 以及相关的身份验证 API。
在 Windows Vista 以后的系统中,Session 0 不再用于交互式登录.这有利于提高安全性,因为现在已有一个会话边界将所有的计算机进程与各个用户的进程分隔开来。此外,现在对内核全局命名空间的控制也更加严格,因为默认情况下由用户应用程序创建的对象已不在内核全局命名空间之内。
除Session 0 之外的每一个Session仍会有一个 winlogon 实例, 已通过新的 LogonUI 进程加载。
在由哪个组件负责显示登录图形界面方面也有一个重要的改动。以前,这是由 GINA 来处理的,因此,显示界面的工作可能一直由第三方组件来完成。在新的体系结构中,这是由操作系统的一个内置组件 LogonUI 来负责完成的。
新的Credential Provider机制由2部分组成
ICredentialProvider :
以ICredentialProvider 为父类的Provider对象,初始化时LogonUI会调用SetUsageScenario 函数来初始化环境,然后调用
GetCredentialCount,GetCredentialAt 来得到此Provider下的所有的Credential对象,再调用GetFieldDescriptorCount,GetFieldDescriptorAt来得到Credential的UI描述.注意UI描述对于同一个Provider下的Credential都是相同的.
ICredentialProviderCredential :
以ICredentialProviderCredential 为父类的Credential对象,它表现为界面上某一个ICON区域.通过它,可以得到界面每个元素的类型和值.
ICredentialProviderFilter :
以ICredentialProviderFilter 为父类的Credential对象,它是一个过滤对象,可以指定在系统登录的时候,那些Provider是有效的,通过它可以实现只保留系统中一个或几个特殊Provider的效果.
Credential Provider注册
注册表结构类似如下形式
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{F617AF08-2856-419c-B4E5-2889C6B71EA9}]
@="SSCredProvider"
[HKEY_CLASSES_ROOT\CLSID\{F617AF08-2856-419c-B4E5-2889C6B71EA9}]
@="SSCredProvider"
[HKEY_CLASSES_ROOT\CLSID\{F617AF08-2856-419c-B4E5-2889C6B71EA9}\InprocServer32]
@="E:\\Sources\\SourceRoot\\trunk\\win32\\bin.debug\\SSCredProvider.dll"
"ThreadingModel"="Apartment"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Provider Filters\{F617AF08-2856-419c-B4E5-2889C6B71EA9}]
@="SSCredProvider"
有几点需要注意:
1. Credential一般存在于Provider中,必须动态创建,利用COM的AddRef和Release机制来操作其生命周期.
2.Credential通过GetSerialize来登录系统,调用Lsa系列函数,例如LsaConnectUntrusted等,结果如果为NTSTATUS,可以调用HRESULT_FROM_NT来判断是否成功,HRESULT要用SUCESSED宏,而不能直接比较是否等于S_OK.
3.关于FieldDescriptor.每个Provider下的Credentials共享相同的FieldDescriptor,即一个Credential有几个UI元素,其余的Credentials也必须有相同的个数,但是每个Credentials可以通过GetFieldState 来调整自己的UI元素的状态.
SOURCE CODE :
http://download.csdn.net/detail/patdz/4265512
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/不正经/article/detail/522071
推荐阅读
article
动态
规划
:
子
序列
问题(C++)_
递增
子
序列
的
个数
...
动态
规划
:
子
序列
问题(C++)_
递增
子
序列
的
个数
递增
子
序列
的
个数
...
赞
踩
article
如何
有效的做
Code
Review
_
codedianping
...
如何
有效的做
Code
Review
什么是
Code
Review
?
Code
Review
代码评审是指在软件开发过程中,通过...
赞
踩
article
拼尽全力!4年
Java
经验
小伙收获
美团
Offer
,分享他
的
社招
Java
岗4面面经_
美团
java
面试
经...
小编精心为大家准备了一手资料以上
Java
高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、z...
赞
踩
article
Latex
高亮文本_
latex
highlight
...
latex
高亮文本_
latex
highlight
latex
highlight
latex
对...
赞
踩
article
[挖坟]如何
安装
Shizuku
和
LSPatch
并
安装
模块
(不需要
Root
,非
Magisk
)_shiz...
安装
Shizuku
&
LSPatch
,
安装
LSPatch
模块
教程_
shizuku
安装
shizuku
安装
...
赞
踩
article
出自
阿里
P8
之手的这份微
服务
架构
实践手册,为何能霸榜
GitHub
一周...
微
服务
架构
是一项在云中部署应用和
服务
的新技术。大部分围绕微
服务
的争论都集中在容器或其他技术是否能很好地实施微
服务
,而红帽...
赞
踩
article
FPGA
秋招-
笔记
整理
(
3
)
无
符号
数
、有
符号
数
...
(
1
)
FPGA
秋招-
笔记
整理
(
3
)
无
符号
数
、有
符号
数
参考:Verilog学习
笔记
——有
符号
数
的...
赞
踩
article
Python
全栈:
Flask
的
ORM
使用
_
python
flask
orm...
文章目录1
ORM
是什么2
flask
-sqlalchemy介绍及安装、配置安装fask-sqlalchemy配置创建数...
赞
踩
article
Java
面向对象程序设计_1. 创建一个
ayyaylist
,
在其中加入三个
职工
。
职工
类employe...
Java
实训作业ArrayList应用 任务1:ArrayList类的应用 (1)创建一个
职工
类Emplo...
赞
踩
article
记录在
jenkins
中自动部署
m
a
ven
项目时碰到的一些问题_
hudson
/
re
mo
ting
/l
a
u...
主要是再使用
jenkins
构建部署
m
a
ven
项目时遇到的报错的解决方案_
hudson
/
re
mo
ting
/l
a
uncher...
赞
踩
article
TCP
收发
json
.
客户端
和服务端
。
_
tcp
json
接收 源码...
好久没有写东西了
。
其实是因为有了自己的onedrive 和 svn 所以东西都放在自己的云里面了
。
这次是通过
tcp
收发j...
赞
踩
article
Qt
获取
屏幕
大小并设置居中
_
qt4
获取
屏幕
物理
尺寸
...
Qt
获取
当前
屏幕
大小1、头文件#include2、代码QScreen *screen = QGuiApplication...
赞
踩
article
LaTeX
排版
(四)——
颜色
与
超链接
_
hypersetup
...
LaTeX
生成 PDF 文档时的一些
排版
设置
_
hypersetup
hypersetup
...
赞
踩
article
二、
verilog
除法
器_
除法
verilog
...
1.目标:使用
verilog
实现一个32位的
除法
器,实现27/5 = 5……22.方法:首先将被除数前面补上16个0,在...
赞
踩
article
数据结构
之
二叉树
_
数据结构
二叉树
...
1、基本概念:树就是一种类似现实生活中的树的
数据结构
(倒置的树)。任何一颗非空树只有一个根节点。2、一棵树具有以下特点:...
赞
踩
article
2022
/5/
30
Mybatis
-
Plus
详解_
mybatisplus
实体
字段
默认值
...
目录1.
Mybatis
-
Plus
简介2.特性3.支持数据库4.框架结构5.快速开始 5.1创建数据库mybatis_pl...
赞
踩
article
Java
配置
环境
(
详细
版)...
我安装到C:\Program Files\
Java
\jdk1.8.0_144,然后无脑下一步就行。注:推荐安装到D盘 记...
赞
踩
article
情感分析
SnowNLP
--
中文
分析_
snownpl
中文
翻译
...
美图欣赏:一.
SnowNLP
简介
SnowNLP
是一个python写的类库,可以方便的处理
中文
文本内容,是受到了TextB...
赞
踩
article
C++使用
http
向
服务器
发送
json
数据
_
c++
发送
json
格式
数据
...
http
json
_
c++
发送
json
格式
数据
c++
发送
json
格式
数据
...
赞
踩
article
Latex
添加
文本
高亮
和给文字标红_
latex
高亮
文本
...
blue为blue的负色,和yellow的颜色呈现有区别。撰写总的代码,开始运行,下面为
文本
颜色呈现的效果。一般
文本
颜色...
赞
踩
相关标签
动态规划
c++
算法
笔记
力扣
测试
性能优化
编程
产品
敏捷
java
开发语言
文档资料
手机
经验分享
后端
fpga开发
python
Flask
ORM的使用
mysql
数据库
eclipse
jenkins
maven