在WindowsNT2000下盾控完美的解决方案
前言
在Windows 9x环境下,我们可以使用SystemParametersInfo(spi_screensaverrunning,1空,0)屏蔽Ctrl+Alt+Del,但它不工作在NT / 2000环境,因此采用wh_keyboard_ll,低级键盘钩子不能拦截。屏蔽Ctrl+Alt+Del在NT / 2000取代吉娜的DLL实现的功能。
下载源代码6k
1。原理
在NT / 2000、交互式登录的支持是通过调用DLL实现登陆吉娜。吉娜DLL提供了提供用户登录认证请求的交互界面。当WinLogon被初始化,按Ctrl + Alt + Del消息截获到系统注册,所以其他程序不能得到按Ctrl + Alt + Del的消息。
Winlogon将与吉娜DLL交互,默认的是MSGINA.DLL(在system32目录)。微软还提供接口给我们。
吉娜DLL可以代替msgina.dll了。
当程序初始化,3桌面创建:
(1)、安全桌面:窗口安全界面主要显示,比如你按下Ctrl + Alt + Del,登陆界面等
(2)应用程序桌面:我们通常用计算机看到的接口
(3)屏幕保护桌面:屏幕保护显示界面。
当用户登陆时,按Ctrl + Alt + Del键被按下,Winlogon回调用吉娜DLL输出函数:wlxloggedonsas,
在这一点上在Winlogon桌面,只要我们把他直接进入应用桌面,系统不会显示Windows安全接口,另一个声明
也就是说,在用户按下Ctrl + Alt +,它将不会发挥任何作用。当我们切换桌面,屏幕闪烁!
两。程序的实现
吉娜DLL要输出以下功能(程序将调用)
wlxactivateusershell
wlxdisplaylockednotice
wlxdisplaysasnotice
wlxdisplaystatusmessage
wlxgetstatusmessage
wlxinitialize
wlxislockok
wlxislogoffok
wlxloggedonsas
wlxloggedoutsas
wlxlogoff
wlxnegotiate
wlxnetworkproviderload
wlxremovestatusmessage
wlxscreensavernotify
wlxshutdown
wlxstartapplication
wlxwkstalockedsas
为了简化编程,动态地得到来自MSGINA.DLL的上诉功能和呼叫msgina.dll直接在自定义的DLL(以下简称NoReboot。DLL)
函数可以。我们要对付的是wlxloggedonsas功能:
Int WINAPI WlxLoggedOnSAS(
pwlxcontext PVOID,
DWORD dwsastype,
PVOID保存)
{
处理hmutex;
writeinfo(wlxloggedonsas R);用于记录信息
如果(dwsastype = = wlx_sas_type_ctrl_alt_del){ / / ctrl_alt_del屏蔽,也可以根据具体情况决定是否屏蔽
我使用互斥来控制是否屏蔽,(注意:Unicode)
要想获得hmutex =(mutex_all_access,假,我_ac952_z_cn_ctrl_alt_del );
如果(hmutex){
CloseHandle(hmutex);
writeinfo(disble Ctrl + Alt + Del R;
返回wlx_sas_action_none; / /屏幕切换到桌面应用程序,按Ctrl + Alt + Del盾
}
其他的
writeinfo(不disble Ctrl + Alt + Del R;
}
这是我的回报prcwlxloggedonsas( / /从msgina.dll接入功能。
PWlxContext,
DwSasType,
保存);
}
我们要把hmutex = CreateMutex(空、假、_ac952_z_cn_ctrl_alt_del )在我们自己的计划;你可以屏蔽Ctrl+Alt+Del。
三、安装注意事项
在写作吉安DLL,需要注意的是,吉娜DLL使用Unicode重要。
吉娜dll安装:
名称: hkey_local_machine 软件微软 Windows currentversion winlogon
变量的名字:GinaDLL
变量类型:{ reg_sz }
内容:吉娜dll的名称
复制你的吉娜(noreboot DLL,DLL)到系统目录(system32),重启机器,和你的吉娜(noreboot DLL,DLL)将运行。
如果你不能进入你的系统,如果你进入DOS,复制到你的吉娜(noreboot msgina.dll DLL,DLL),或进入安全模式,删除键值。