GINA的问题,登录不成功会显示系统登录框

上海老李 2009-09-25 06:17:58
问题如上,假如我在自己的gina界面中输入了本地登录的帐户,但是输错了,那么就登录不成功,然后会显示系统的登录窗口,哪位有解决办法?谢谢
...全文
197 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
glorywu 2009-09-28
  • 打赏
  • 举报
回复
你自己先用LogonUser函数判断一下。可以参考下。
http://blog.sizeof.cn/html/2009/46.html
上海老李 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 syj089 的回复:]
去找到系统的GINA.dll,然后替换成自己编写的Gina.dll,重启下机器就可以了!
[/Quote]
没有系统的验证,哪个能知道用户输的到底对不对,呵呵
上海老李 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 syj089 的回复:]
去找到系统的GINA.dll,然后替换成自己编写的Gina.dll,重启下机器就可以了!
[/Quote]
如果那样,估计MS自己都要跳楼了,除非你用别的方式,不然msgina.dll是不会被修改掉的
和黑1 2009-09-28
  • 打赏
  • 举报
回复
去找到系统的GINA.dll,然后替换成自己编写的Gina.dll,重启下机器就可以了!
roman_v 2009-09-28
  • 打赏
  • 举报
回复
要不你就一直while DoModal 直到他输对..要不你就自己实现登陆的代码。。
上海老李 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 flyinghawl 的回复:]
里面的变量命名是怎么回事,我怎么看不懂,lz你解释一下吧。俺是新手
[/Quote]
是导出的msgina.dll中的接口
flyinghawl 2009-09-28
  • 打赏
  • 举报
回复
里面的变量命名是怎么回事,我怎么看不懂,lz你解释一下吧。俺是新手
an_bachelor 2009-09-28
  • 打赏
  • 举报
回复
装个msdn98 那下面带的gina是自己完成登陆过程的
后来的例子都改成一个直接调的垃圾
不过gina反正也没多大用了 vista以后不能玩了
上海老李 2009-09-27
  • 打赏
  • 举报
回复
// 当系统处于登陆成功,没有锁定的状态下
// Winlogon接收到SAS事件,于是调用该函数
// 现屏蔽所有事件,直接返回return WLX_SAS_ACTION_NONE;
int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved)
{
return WLX_SAS_ACTION_NONE;
LOG("WlxLoggedOnSAS");
int result;
result = theApp.MyWlxLoggedOnSAS(pWlxContext, dwSasType, pReserved);
/*switch(result)
{
case WLX_SAS_ACTION_NONE: break;
case WLX_SAS_ACTION_LOCK_WKSTA: break;
case WLX_SAS_ACTION_LOGOFF: break;
case WLX_SAS_ACTION_SHUTDOWN:break;
case WLX_SAS_ACTION_SHUTDOWN_REBOOT: break;
case WLX_SAS_ACTION_SHUTDOWN_POWER_OFF: break;
case WLX_SAS_ACTION_PWD_CHANGED: break;
case WLX_SAS_ACTION_TASKLIST: break;
case WLX_SAS_ACTION_FORCE_LOGOFF: break;
case WLX_SAS_ACTION_SHUTDOWN_SLEEP:break;
case WLX_SAS_ACTION_SHUTDOWN_SLEEP2: break;
case WLX_SAS_ACTION_SHUTDOWN_HIBERNATE: break;
}*/
if (result == WLX_SAS_ACTION_PWD_CHANGED)
{
//here process the changed pwd message
PGINA_CONTEXT ginaContext;
ginaContext =(PGINA_CONTEXT)pWlxContext;
}
else
{
WLX_SAS_ACTION_NONE;
}

return result;

//WLX_SAS_ACTION_PWD_CHANGED


}



// 在没有任何一个用户登陆的情况下,Winlogon.exe接收到SAS事件调用该函数
int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,
DWORD dwSasType,
PLUID pAuthenticationId,
PSID pLogonSid,
PDWORD pdwOptions,
PHANDLE phToken,
PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
PVOID * pProfile)
{
LOG("WlxLoggedOutSAS");

{
if( theApp.m_bShutD_Locked )////在锁定框 里 规定的锁定时间到就关机
{
return WLX_SAS_ACTION_SHUTDOWN;
}


AFX_MANAGE_STATE(AfxGetStaticModuleState());


theApp.m_bLogoff = FALSE;

CLoginDlg login; //登陆

login.pWlxContext =pWlxContext;
login.dwSasType= dwSasType;
login.pAuthenticationId=pAuthenticationId;
login.pLogonSid= pLogonSid;
login.pdwOptions = pdwOptions;
login.phToken = phToken;
login.pMprNotifyInfo =pMprNotifyInfo;
login.pProfile = pProfile;


int rhLogin = login.DoModal( );

if ( rhLogin == IDCANCEL )
{
return WLX_SAS_ACTION_NONE;
}
else if( rhLogin == IDOK )
{
return login.m_nRet;
}
if( login.m_nRet == 0 )
{
return WLX_SAS_ACTION_SHUTDOWN;//关闭系统
}

return WLX_SAS_ACTION_NONE;
}
// else
return theApp.MyWlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,
pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile);

}

// Winlogon.exe调用该函数收集有效的认证信息
// 返回TRUE表示用户被识别
BOOL WINAPI WlxNetworkProviderLoad(PVOID pWlxContext,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo)
{

return theApp.MyWlxNetworkProviderLoad(pWlxContext,pNprNotifyInfo);
// return TRUE;
}

// Winlogon.exe调用该函数,告诉gina dll停止显示状态信息
// 直接返回TRUE表示信息已经删除
BOOL WINAPI WlxRemoveStatusMessage(PVOID pWlxContext)
{
return theApp.MyWlxRemoveStatusMessage(pWlxContext);
// return TRUE;
}

// 在屏保程序启动前一瞬Winlogon.exe调用该函数,允许gina dll同屏保程序交互
// 返回FALSE表示屏保程序不能启动
BOOL WINAPI WlxScreenSaverNotify(PVOID pWlxContext, BOOL *pSecure)
{
return FALSE;//theApp.MyWlxScreenSaverNotify(pWlxContext,pSecure);
}
上海老李 2009-09-27
  • 打赏
  • 举报
回复
输对了,显示时没有登录框出现的,或者是太快,看不到,呵呵
上海老李 2009-09-27
  • 打赏
  • 举报
回复
哪位有所了解?
roman_v 2009-09-27
  • 打赏
  • 举报
回复
你这个代码 输对了也会出现系统登陆框的吧。。
上海老李 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 roman_v 的回复:]
你是不是不成功就return gina默认的WlxLoggedOutSAS 啊
[/Quote]
是的,是用的一个别人的示例改的,很多都是return gina默认的接口
MoXiaoRab 2009-09-25
  • 打赏
  • 举报
回复
上代码看看
roman_v 2009-09-25
  • 打赏
  • 举报
回复
你是不是不成功就return gina默认的WlxLoggedOutSAS 啊
roman_v 2009-09-25
  • 打赏
  • 举报
回复
放代码
WuXinyang 2009-09-25
  • 打赏
  • 举报
回复
GINA是什么

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧