搜索
查看
编辑修改
首页
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
【Go语言快速上手(三)】数组, 切片与映射
2
基于PyQt Python的深度学习图像处理界面开发(一)
3
数据分类分级方法及典型应用场景_数据分类分级应用系统
4
机器学习中的 K-Means算法及其优缺点(包含Python代码样例)_k-means处理大模型有什么问题吗
5
如何向Linux内核提交开源补丁?
6
gitblit搭建git服务器_git.repositoriesfolder
7
STM32 DMA详解_stm32 dma循环模式 详细解析
8
2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)_caip编程技能赛csdn
9
Maven安装配置&创建Flink项目_flink maven仓库
10
docker-compose 以交互式方式运行你的容器_docker-compose 进入容器
当前位置:
article
> 正文
win7 登陆机制Credential Provider_除session 0 之外的每一个session仍会有一个 winlogon 实例, 已通过新的 l
作者:不正经 | 2024-05-02 03:53:00
赞
踩
除session 0 之外的每一个session仍会有一个 winlogon 实例, 已通过新的 logonui
转载自:https://blog.csdn.net/tianyu030963/article/details/12906167
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/522067
推荐阅读
article
数据库报错:无法识别
服务器时
区值或表示多个
时区
。如果要利用
时区
支持,则必须配置服务器或
JDBC
驱动程...
### Cause: java.sql.SQLException: The server time zone value...
赞
踩
article
Python
SQLAlchemy
基本操作
和常用技巧(包含大量实例,非常好)_
self
.sessio...
首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,API 也许会有些不同。因为我是搭配 MyS...
赞
踩
article
Db.
session
.
query
vs
Model
.
query
...
文章目录前言相同之处不同之处总结参考资料前言之间在使用中发现用flask-sqlalchemy 有两种查询的方法 一种是...
赞
踩
article
0基础和我学
python
----
SQLAlchemy
框架
(1)_db.
session
.
query
多...
ModelBase = declarative_base() #_db.
session
.
query
多表
数据格式
db....
赞
踩
article
Web框架——
Flask
系列之
Flask
-
SQLAlchemy
数据库
的
基本操作
(九)_
db
.sess...
数据库
基本操作
在
Flask
-
SQLAlchemy
中,插入、修改、删除操作,均由
数据库
会话管理。会话用
db
.sessio...
赞
踩
article
flask
_
sqlalchemy
中
db
.
session
是
如何保持
请求
间独立的
_
sqlalchemy
...
本文主要
是
为了验证两个问题:
flask
处理
请求
时通过新建线程、进程、协程的区别(顺带一提)
flask
_
sqlalchem...
赞
踩
article
基于
db
.
session
进行
查询
...
基于
db
.
session
进行
查询
(适用于多表
查询
)基本语法:
db
.
session
.query(Models1).fi...
赞
踩
article
python
sqlalchemy
db
.
session
的
commit
()和
colse
()对ses...
python
sqlachemy
session
与model实例的关系_
python
sqlalchemy
查询 需要 ...
赞
踩
article
Flask
数据库
基本操作_db.
session
.
delete
...
一. 增删改操作1. 基本概念在
Flask
-SQLAlchemy中,插入、修改、删除操作,均由
数据库
会话管理。会话用db...
赞
踩
article
Flask
学习笔记(十三)
数据库
基本操作
_
db
.
session
.
update
...
数据库
基本操作
在
Flask
-SQLAlchemy中,插入、修改、删除操作,均由
数据库
会话管理。会话用
db
.
session
...
赞
踩
article
12.
python
数据
库
操作(
SQLAlchemy
)_
python
db.
session
如何更新...
Python
数据
库
操作通常使用 SQLALchemy 模块,它是一个强大的 ORM(对象关系映射)工具,可以实现 Py...
赞
踩
article
【
Design
】
DbSession
设计 数据访问层的入口_
db
session
:
= &
db
sessi...
DbSession
是数据访问层的入口拥有所有Dal实例public class
DbSession
{ public I...
赞
踩
article
学习狗书
flask
web,发现有时候db.
session
.add(
current
_
user
),有时...
current
_
user
._
get
_
current
_
object
() vs
current
_
user
_
current
_u...
赞
踩
article
python
sqlalchemy
session
_
[已解决]
SQLAlchemy
中如何得到
db
.s...
折腾:期间,对于已有的代码:/Users/crifan/dev/dev
_
root/daryun/SIPEvents/so...
赞
踩
article
Web后端学习笔记
Flask
(7)
数据库
_
db
.
session
.
query
...
高级查询:1. group
_
by根据某个字段进行分组,比如说需要根据某个字段分组,来统计每组有多少人。2. having...
赞
踩
article
linux
驱动-
CCF
-1
provider
注册
时钟
...
struct clk_hw_onecell_data onecell 填充到struct of_clk_
provider
...
赞
踩
article
SQLAIchemy 异步
DBManager
封装-03得心应手_
self
.
session
.
merge
...
SQLAIchemyManager 设计用于初始化数据库配置信息BaseOrmTable、TimestampColumn...
赞
踩
article
【转】
Python
SQLAlchemy
基本操作
和常用技巧(包含大量实例,非常好)_sqlalche...
转自:https://www.cnblogs.com/tomato0906/articles/4836886.html首...
赞
踩
article
session
.
merge
()
_
session
.
merge
()...
下面来讲讲Hibernate的
merge
方法。我打算按照hibernate对象生命周期的三个状态来讲。1:如果POJO对...
赞
踩
article
session
.
merge
()
方法
_cur
session
.
merge
...
session
.
merge
()
方法
该
方法
将修改表中记录,其所需要的实体状态为脱管状态,但是注意,它并不影响调用
方法
前后...
赞
踩
相关标签
Python
SQLAlchemy
python
数据库
mysql
sql
flask框架
开发语言
flask
学习
web
python sqlalchemy session