完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。
一个非常不错的屏幕保护程序制作工具,让你可以结合图形文件,文字,多媒体动画为一个屏幕保护程序。内含有很多实用工具,支持多语言,有很多特效等,支持avi/wav文件。"锦囊妙技"栏目是聚合全网软件使用的技巧或者软件使用过程中各种问题的解答类文章,栏目设立伊始,小编欢迎各路软件大神朋友们踊跃投稿,在完美者平台分享大家的独门技巧。
本站文章素材来源于网络,大部分文章作者名称佚失,为了更利于用户阅读和使用,根据需要进行了重新排版和部分改编,本站收录文章只是以帮助用户解决实际问题为目的,如有版权问题请联系小编修改或删除,谢谢合作。
软件大小:1.23 MB
一、原理在NT/2000/XP/2003中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供了接口,我们可以自己编写GINA DLL来代替MSGINA.DLL。WinLogon初始化时会创建3个桌面: winlogon桌面:主要显示Windows 安全等界面,如你按下CTRL+ALT+DEL,登陆的界面等 应用程序桌面:我们平时见到的那个有我的电脑的界面 屏幕保护桌面:屏幕保护显示界面。在默认情况下,GINA显示登陆对话框,用户输入用户名及密码 。所以要获得用户名和密码 ,则可以写一个新的GINA DLL,其中提供接口调用msgina.dll的函数WlxLoggedOutSAS。二、程序实现GINA DLL要输出下列函数(winlogon会调用):(表一)GINA 函数一览表函数 描述WlxActivateUserShell 激活用户外壳程序WlxDisplayLockedNotice 允许GINA DLL 显示锁定信息WlxDisplaySASNotice 当没有用户登陆时,Winlogon调用此函数WlxDisplayStatusMessage Winlogon 用一个状态信息调用此函数进行显示WlxGetConsoleSwitchCredentials Winlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话WlxGetStatusMessage Winlogon 调用此函数获取当前状态信息WlxInitialize 针对指定的窗口位置进行GINA DLL初始化WlxIsLockOk 验证工作站正常锁定WlxIslogoffOk 验证注销正常WlxLoggedOnSAS 用户已登陆并且工作站没有被加锁,如果此时接收到SAS事件,则Winlogon 调用此函数WlxLoggedOutSAS 没有用户登陆,如果此时收到SAS事件,则Winlogon 调用此函数, This indicates that a logon attempt should be made 。WlxLogoff 请求注销操作时通知GINA DLL WlxNegotiate 表示当前的Winlogon版本是否能使用GINA DLLWlxNetworkProviderLoad 在加载网络服务提供程序收集了身份和认证信息后,Winlogon 调用此函数WlxRemoveStatusMessage Winlogon 调用此函数告诉GINA DLL 停止显示状态信息WlxScreensaverNotify 允许GINA与屏幕保护操作交互WlxShutdown 在关闭之前Winlogon 调用此函数,允许GINA实现任何关闭任务,例如从读卡器中退出智能卡WlxStartApplication 当系统需要在用户的上下文中启动应用程序时调用此函数WlxWkstaLockedSAS 当工作站被锁定,如果接收到一个SAS,则Winlogon 调用此函数为了简化编程,我们从MSGINA.DLL中动态获取上述函数,在自定义的DLL中(以下称为MyGina.DLL)中直接调用MSGINA.DLL的函数即可。现在我们要处理的就是WlxLoggedOutSAS函数:int WINAPI WlxLoggedOutSAS(PVOID pWlxContext, DWORD dwSasType, PLUID pAuthenticationId, PSID pLogonSid, PDWORD pdwOptions, PHANDLE phToken, PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, PVOID * pProfile){//=========================加入我的登陆========================= Clogin login; if (login.DoModal()==IDCANCEL) { return WLX_SAS_ACTION_NONE; } if(login.bCLOSE==TRUE) { return WLX_SAS_ACTION_SHUTDOWN; } if(login.DoModal()==IDOK) { char UserName[40]; char PassWord[40]; char PassWord2[40]; strcpy(UserName,theApp.MyUser); strcpy(PassWord,theApp.MyPass);//为了便于演示,直接在程序里面比较密码,并且把默认管理员帐号设置为自动登陆//自动登陆函数SetAutoLogon strcpy(PassWord2,theApp.MyPass2); // AfxMessageBox(UserName); // AfxMessageBox(PassWord); if(!strcmp(UserName,"Administrator")) if(!strcmp(PassWord,"123")) if(!strcmp(PassWord2,"456")) { SetAutoLogon("administrator","","123"); return theApp.MyWlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId, pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile); } } AfxMessageBox("密码或者用户名错误!不能登陆!"); return WLX_SAS_ACTION_NONE;}然后设计登陆框,实现自己的界面。本示例如图所示。三、安装和注意事项:(一) 在编写GIAN DLL中要注意,GINA DLL使用的是unicode。(二) 【安装】GINA DLL的安装:1. 添加注册表键名 :\HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon变量名 : GinaDLL变量类型 : [REG_SZ]内容 : "你的GINA DLL的名称" 如:"MyGina.DLL:2. 将你的GINA DLL(MyGina.dll)拷贝到系统目录下(system32);3. 重启机器,你的GINA DLL(MyGina.dll)就会运行。【注意】1) 如果出现进不了你的系统,那你进入DOS后,将msgina.dll拷贝成你的GINA DLL(MyGina.dll)就可进入了;或者进入安全模式,删除掉那个键值( GinaDLL )。2) Console 程序如果想使用MFC类,必须包含<afx.h>,同时注释掉<windows.h>。3) 如果出现这种错误:“LINK : fatal error LNK1104: cannot open file "mfc42u.lib" ”,那么说明 lib路径的设置问题,你的链接器在指定的目录下没有找到这个的文件,你应该添加新的目录以便编译器找到所需的库文件。具体位置:IDE中菜单Tools\Options\Directories\show directories for\ <library files>。4) 如果出现这种错误:“uafxcwd.lib(dllmol.obj) : error LNK2005: _DllMain@12 already defined in main.obj ”或者“mfcs42ud.lib(dllmol.obj) : error LNK2005: _DllMain@12 already defined in main.obj ”,那么“See if you have _AFXDLL and _USRDLL in the preprocessor definitions. Try removing one of them”。具体位置:IDE中 菜单Project \ Setting \ C/C++ \ preprocessor definition 。
桌面上右键-属性-屏幕保护程序-下拉框中选择(图片收藏幻灯片)上面会显示给你路径,把你要的图片都放到这个文件夹,于是设置剩下的细节就OK乐