关于gina的几个问题,向大家请教

matrix2009 2009-07-30 09:16:13
重写了一个gina的DLL,在里面设置了一个钩子,勾住系统显示的消息,然后修改XP的登录对话框,要插入一个安全key,输入密码才能进入XP系统。

现在有这样的一个问题,修改了注册表之后,将AutoAdminLogon修改为1,defaultpassword设置为系统密码后,重启系统直接就进入了XP系统,没有出现XP的登录对话框。( 是应该出现一个XP的登录对话框的,要求输入XP系统密码和安全key的密码。输入正确的密码后才能登录。登录之后拔掉安全key会锁定系统,要求插key,并输入密码。)拔掉key之后也没有出现锁定对话框。

想请教大家,这是怎么回事?
...全文
214 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
matrix2009 2009-08-26
  • 打赏
  • 举报
回复
还是老问题,26楼没理解我的意思。
我再解释一下,问题是这样的,
启动电脑时,key一直插着,这样就直接进入系统了,没有锁屏。

而我想要实现的功能是:
进入系统时自动锁屏,以便输入key的密码和系统密码。

请经验的牛人指点一下。
token0801 2009-08-19
  • 打赏
  • 举报
回复
你在哪里执行LockWorkStation,启了一个线程轮询KEY是否插着?
其实可以在WlxLoggedOnSAS内处理拔key锁屏,拔key时WlxLoggedOnSAS会接收到一个WLX_SAS_TYPE_SC_REMOVE消息,这时你直接将WlxLoggedOnSAS返回为WLX_SAS_ACTION_LOCK_WKSTA就行(需要注意一点:每次登录后需要调用WlxSetOption设置参数WLX_OPTION_USE_SMART_CARD,这个事情2K可以不做,但是XP必须做,否则拔key后不会进入WlxLoggedOnSAS)
rendao0563 2009-08-12
  • 打赏
  • 举报
回复
还没搞定?
matrix2009 2009-08-11
  • 打赏
  • 举报
回复
没锁定的时候LockWorkStation也是成功执行了的
matrix2009 2009-08-11
  • 打赏
  • 举报
回复
没锁定的时候没有hook到锁定对话框
skybblue 2009-08-10
  • 打赏
  • 举报
回复
首先你的程序中是怎么捕获key插拔事件,这个要好用,还是自己写日志看看掉没调用这个LockWorkStation这个函数.
rendao0563 2009-08-10
  • 打赏
  • 举报
回复
你这个做的人多了。找套源码 抄一下就OK了。
roman_v 2009-08-10
  • 打赏
  • 举报
回复
没锁定的时候你hook成功了没?
matrix2009 2009-08-10
  • 打赏
  • 举报
回复
我们是hook到登陆对话框和锁定对话框。
在启动电脑进入桌面,但还没出现那些桌面的程序的快捷方式图标时锁定电脑,hook到锁定对话框,然后重绘它,在下面加上一个编辑框,要求输入安全key的密码,输入正确的密码后才能解除锁定,进入系统。

问题就在于:有时候可以锁定,有时候不能锁定。
如果重启电脑时,安全key一直插在USB接口上,有时就会自动进入系统,不会锁定计算机:有时也会锁定。
如果重启时先拔掉安全key,在出现XP系统的启动画面,就是下面有个水平的滚动条向右的滚动几次后,再插入安全key,那样就可以再出现桌面后锁定计算机。

roman_v 2009-08-10
  • 打赏
  • 举报
回复
不过如果你只是想先输入你的key,才能出现登陆框那就无所谓了

//

typedef int (WINAPI * PFWLXLOGGEDOUTSAS) (PVOID, DWORD, PLUID, PSID, PDWORD,
PHANDLE, PWLX_MPR_NOTIFY_INFO,
PVOID *);

PFWLXLOGGEDOUTSAS pfWlxLoggedOutSAS;

int
WINAPI
WlxLoggedOutSAS (PVOID pWlxContext,
DWORD dwSasType,
PLUID pAuthenticationId,
PSID pLogonSid,
PDWORD pdwOptions,
PHANDLE phToken,
PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
PVOID * pProfile)
{

//add your code here;

WaitForSingleObject(hMyHandle,INFINITE);//等待你自己的认证通过

int iRet;
iRet = pfWlxLoggedOutSAS(pWlxContext,
dwSasType,
pAuthenticationId,
pLogonSid,
pdwOptions,
phToken,
pMprNotifyInfo,
pProfile);

return iRet;
}

roman_v 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 matrix2009 的回复:]
如何实现
[/Quote]

你可以去看windows platform sdk 的例子Microsoft SDK\Samples\security\GINA下面有两个,一个GinaStub一个GinaHook.

更详细的可以去搜sdk_WinBase_Security_WinNT_gina.zip和 SecurityBriefs 这两个比较完整。

gina里面有20个函数,都需要实现,有的要完全重写,有的直接return msgina里的原函数就可以了。。

不过用gina有个问题,原来的登陆框不能用了,你自己要绘制xp的登陆框了。。
和黑1 2009-08-07
  • 打赏
  • 举报
回复
在用USBKEY进行锁屏时,需要对USBKEY进行初始化!
matrix2009 2009-08-07
  • 打赏
  • 举报
回复
如何实现
roman_v 2009-08-07
  • 打赏
  • 举报
回复
不能用AutoAdminLogon,那样会直接登陆,要自己实现WlxLoggedOutSAS~~
和黑1 2009-08-07
  • 打赏
  • 举报
回复
在安装时初始化,就是初始化他的PIN码!你在试试
matrix2009 2009-08-07
  • 打赏
  • 举报
回复
USBKEY已经初始化过了 ,里面有相关的信息。
biweilun 2009-08-06
  • 打赏
  • 举报
回复
恐怕是3#说的那些函数你有没有实现的吧,你每个函数都写个输出Log看看
matrix2009 2009-08-06
  • 打赏
  • 举报
回复
为什么使用LockWorkStation不能锁定计算机?
matrix2009 2009-08-06
  • 打赏
  • 举报
回复
这个帖子是以前发的,一直没人回答,以为沉底了,就再发了一下。
而且 2楼的同志说看不明白,我就整理了一下重新发了一个。
不好意思啊
bohut 2009-08-06
  • 打赏
  • 举报
回复
楼主在这还发了一个相同贴啊?没看到。
http://topic.csdn.net/u/20090805/16/f4686394-7a21-4a74-b94a-de86e94304cb.html?42732
加载更多回复(7)

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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