可恶的0xcccccccc引起的问题

 

 

在文章《WlxLoggedOutSAS的实现方法》中提到保留msgina.dll里的WlxLoggedOutSAS,但用自己的LSA验证的方法。

这里遇到新的情况。

一、情况描述

1、设计为:

第一次登录时就采用自定义的LSA验证,如果用户本地输入,那么WlxLoggedOutSAS结束时,从返回的

参数中获得用户名与密码,然后交由自己的LSA验证。

目的:

 

 

2、

 

RDP中注销后,在计算机的锁屏时输入用户名与密码进行登录。此时是会话2的WlxLoggedOutSAS结束。

结束时通知会话0进行LSA登录(因为此时会话0是处于Logoff状态),那么登录的用户名与密码哪里来呢?

当会话2的WlxLoggedOutSAS结束后返回的pszDomain是有值的,但是因为我通知会话0进行LSA验证了,此时

会话0的pszDomain竟然是0xccccccc。

 if ( 0xcccccccc == (unsigned int)g_CXRedGinaApp.m_sWlxLogOutContext.s_pMprNotifyInfo->pszDomain || NULL == g_CXRedGinaApp.m_sWlxLogOutContext.s_pMprNotifyInfo->pszDomain)
			{
				wcscpy(wstrUserName, CShareData::m_lpShareData->DataLogonInfo.u.up.username);
				wcscpy(wstrPassWord, CShareData::m_lpShareData->DataLogonInfo.u.up.password);
				wcscpy(wstrDomain, CShareData::m_lpShareData->DataLogonInfo.u.up.domain);
			}

解决方法:

在会话2结束时把用户名与密码保存到共享内存中,然后通知完会话0后,会话0再从共享中读出来进行LSA验证。

3、WlxLogoff出现异常

 解决方法:

WlxLogoff函数自己重写,不用msgina.dll中的接口。

4、

你可能感兴趣的:(可恶的0xcccccccc引起的问题)