快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

手机下载澳门新葡亰官网:Win2KNT下屏蔽Ctrl+Alt+Del的响应(VC)



大年夜家知道,Ctrl+Alt+Del是Win2k/NT操作系统默认的系统登录/注销组合键序列,系统级别很高。在利用法度榜样中,想要樊篱掉落该键序列的相应或获得这个“按下”事故,难度是相昔时夜的。本文先容了一种简单易行的措施,实现在用户登录成功后,按下Ctrl+Alt+Del不再弹出“Windows安然”对话框。

关键词:GINA(Graphical Identification aNd Authentication)

SAS(Secure Attention Sequence)

一.  开拓道理

首先先容一下Winlogon。Windows 2000/NT有三种系统状态:没有用户登录状态、用户成功登录状态以及事情站锁定状态。Winlogon是Windows 2000/NT操作系统供给交互式登录支持的组件。Winlogon有三个组成部分:可履行文件winlogon.exe,供给图形界面认证功能的动态库Gina Dll,以及一些收集办事供给动态库Network Provider Dll。参考模型如下:

winlogon.exe处置惩罚一些下层导出的接口函数,而认证策略是在Gina Dll中是自力设计的。在系统启动时,Gina Dll被winlogon.exe装载。Microsoft供给了一个默认的Gina Dll——Winnt\system32\msgina.dll,供给了标准的用户名、密码认证模式。Gina Dll是可调换的,用户可以设计自己的Gina Dll,以供给其他如智能卡、视网膜、指纹或其他一些认证机制。

开拓自定义的Gina Dll。必须实现并导出与winlogon.exe交互的18个标准函数接口,包括WlxNegotiate、WlxInitialize、WlxLoggedOnSAS等(其他函数接口请参考Msdn)。此中WlxNegotiate是winlogon.exe调用的第一个接口函数,进行需要的版本判断,随后调用的是WlxInitialize,主要完成winlogon.exe特定版本的函数分派表向Gina Dll的通报。笔者还要阐明的是WlxLoggedOnSAS函数,这个函数主要的功能是,当winlogon在登录成功状态下,接管到SAS事故,于是调用这个函数进行SAS事故的识别以及进行各事故的响应处置惩罚。

自定义Gina Dll的应用。比如开拓的Gina Dll文件名为MyGina.dll。将该文件放到以下路径:Winnt\system32。并改动注册表,如下:

Key Name: \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ Winlogon

Value Name: GinaDLL

Value Type: [REG_SZ]

Value: MyGina.dll

从新启动谋略机MyGina.dll即投入应用。

二.  利用实例

利用要求:在用户登录成功状态下,按下Ctrl+Alt+Del时系统不再弹出“Widows安然”对话框。因为并不必要改变用户名、密码这种标准的认证模式,以是可以仍旧应用msgina.dll中导出的函数接口,而对WlxLoggedOnSAS函数的实现进行需要的改变。

开拓情况:Windows 2000,PII 400

开拓对象:Microsoft Visual C++ 6.0

开拓步骤:

1.新建项目,选择MFC AppWizard(dll),项目名输入为MyGina。按下“OK”后,选择Regular DLL with MFC statically linked,按下“Finish”。

2.应用View->ClassWizard为CmyGinaApp增添InitInstance和ExitInstance两个函数的覆盖。留意在Stdafx.h中加入#include 。

3.因为要导入msgina.dll的接口函数,以是在MyGina.h中定义接口函数变量类型,如下:

typedef (WINAPI * NEGOTIATE)    (DWORD,PDWORD);

typedef (WINAPI * INITIALIZE)   (LPWSTR,HANDLE,PVOID,PVOID,PVOID *);

typedef (WINAPI * ACTIVATE_USHELL) (PVOID,PWSTR,PWSTR,PVOID);

typedef (WINAPI * PARAM_PVOID)   (PVOID);

typedef (WINAPI * DISP_STATUS)   (PVOID,HDESK,DWORD,PWSTR,PWSTR);

typedef (WINAPI * GET_STATUS)   (PVOID,DWORD *,PWSTR,DWORD);

typedef (WINAPI * LOGON_SAS)    (PVOID,DWORD,PVOID);

typedef (WINAPI * LOGOUT_SAS)   (PVOID,DWORD,PLUID,PSID,PDWORD, PHANDLE,WLX_MPR_NOTIFY_INFO,PVOID *);

typedef (WINAPI * NETWORK_LOAD)  (PVOID,PWLX_MPR_NOTIFY_INFO);

typedef (WINAPI * SCR_SAVER)    (PVOID,BOOL *);

t手机下载澳门新葡亰官网ypedef (WI手机下载澳门新葡亰官网NAPI * SHUT_DOWN)    (PVOID,DWORD);

typedef (WINAPI * START_APP)    (PVOID,PWSTR,PVOID,PWSTR);

typedef (WINAPI * LOCKED_SAS)   (PVOID,DWORD);

实现ExitInstance如下:

// 卸载dll

if (hMsDll != NULL)

{

::FreeLibrary(hMsDll);

hMsDll = NULL;

}

5.实现接口函数。因为本利用仍旧维持msgi手机下载澳门新葡亰官网na.dll的大年夜部分操作,以是MyGina.dll的接口函数的实现较为简单。重点必要留意的是WlxLoggedOnSAS函数的实现。当在成功登录状态下,不管接管到什么SAS事故,该函数直接返回WLX_SAS_ACTION_NONE而不做其他处置惩罚。因为实现的函数较多(必须的18个),笔者仅列出代表性的五个,另外的依理类推。

// Winlogon.exe调用的gina dll中的第一个函数

// 使gina dll确认是否支持当前版本的Winlogon.exe

// 通报给winlogon.exe必要那个版本的接口函数

BOOL W手机下载澳门新葡亰官网INAPI WlxNegotiate(DWORD dwWinLogonVersion, PDWORD pdwDllVersion)

{

// 直接调用从msgina.dll中导入的函数

return theApp.MyWlxNegotiate(dwWinLogonVersion,pdwDllVersion);

}

// 初始化,winlogon.exe向gina dll通报必要版本的接口函数分配表

BOOL WINAPI WlxInitialize(LPWSTR  lpWinsta,

HANDLE  hWlx,

PVOID   pvReserved,

PVOID   pWinlogonFunctions,

PVOID *  pWlxContext

)

{

// 直接调用从msgina.dll中导入的函数

return theApp.MyWlxInitialize(lpWinsta,hWlx,pvReserved,pWinlogonFunctions,pWlxContext);

}

// 当系统处于锁定状态时,Winlogon.exe调用该函数

// 显示一些信息,如锁定者、锁准光阴等

VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext)

{

theApp.MyWlxDisplayLockedNotice(pWlxContext);

}

// 在系统关闭之前,Winlogon.exe调用该函数

// 容许gina dll处置惩罚一些系统关闭前的处置惩罚

VOID WINAPI WlxShutdown(PVOID pWlxContext, DWORD ShutdownType)

{

theApp.MyWlxShutdown(pWlxContext,ShutdownType);

}

// 当系统处于登岸成功,没有锁定的状态下

// Winlogon接管到SAS事故,于是调用该函数

// 现樊篱所有事故,直接返回

int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,

DWORD dwSasType,

PVOID pReserved)

{

return WLX_SAS_ACTIO手机下载澳门新葡亰官网N_NONE;

}

6.将MyGina.dll中实现的所有接口函数,在MyGina.def中定义导出。

您可能还会对下面的文章感兴趣: