使用GINA技术做了一个WIN 2K登录程序,是动态链接库,什么都好,就是不能用程序正常的重新启动计算机和关闭计算机,不知道哪位高手遇到过这方面的问题?关于重新启动和关闭计算机前需要权限这中常识就不用回答了,不是这方面的问题
(可惜不能多放点分,解决后可以再加分)

解决方案 »

  1.   

    请看这个帖子:http://tech.sina.com.cn/s/1583.html
    问题解决了,我要所有分啊。
      

  2.   

    我的建议是无需使用你的那种技术,完全可以使用更简单的方法进行修改。方法大概如下:
    1:注册表修改,修改 shell为你的应用程序
    2:锁定鼠标
    3:锁定键盘三个组合键
    完全可以高顶的
      

  3.   

    caohonglong2000:你不会以为我连WindowsExitEx都不会用吧,谢谢你的回复! wxjh:好兄弟,你的建议很好,但是老板指定要用GINA技术,我们老板也是程序员,呵呵
      

  4.   

    你替换系统的MSGINA.dll后出现不能重新启动,应该是你的DLL中间的问题吧,好好检查一下
      

  5.   

    看看这个
    一、原理 
    在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。在WinLogon初始化时,就向系统注册截获CTRL+ALT+DEL消息,所以其他程序就无法得到CTRL+ALT+DEL的消息。 
    WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供的接口,自己 
    可以编GINA DLL来代替MSGINA.DLL。 WinLogon初始化时会创建3个桌面: 
    (1)、winlogon桌面:主要显示window 安全等界面,如你按下CTRL+ALT+DEL,登陆的界面等 
    (2)、应用程序桌面:我们平时见到的那个有我的电脑的界面 
    (3)、屏幕保护桌面:屏幕保护显示界面。 在用户登陆以后,按下CTRL+ALT+DEL键的时候,WinLogon回调用GINA DLL的输出函数:WlxLoggedOnSAS, 
    这时正处于winlogon桌面,我们只要直接将他转向应用程序桌面,系统就不会显示Windows安全那个界面,换一种说法 
    也就是用户按下CTRL+ALT+DEL后,不会起什么作用。当是我们在切换桌面的时候会出现屏幕闪动! 二、程序实现 
    GINA DLL要输出下列函数(winlogon会调用) 
    WlxActivateUserShell 
    WlxDisplayLockedNotice 
    WlxDisplaySASNotice 
    WlxDisplayStatusMessage 
    WlxGetStatusMessage 
    WlxInitialize 
    WlxIsLockOk 
    WlxIsLogoffOk 
    WlxLoggedOnSAS 
    WlxLoggedOutSAS 
    WlxLogoff 
    WlxNegotiate 
    WlxNetworkProviderLoad 
    WlxRemoveStatusMessage 
    WlxScreenSaverNotify 
    WlxShutdown 
    WlxStartApplication 
    WlxWkstaLockedSAS 
    为了简化编程,我们从MSGINA.DLL中动态获取上诉函数,在自定义的DLL中(以下称为NoReboot.DLL)中直接调用MSGINA.DLL 
    的函数即可。现在我们要处理的就是WlxLoggedOnSAS函数: 
    int WINAPI WlxLoggedOnSAS ( 
            PVOID pWlxContext, 
            DWORD dwSasType, 
            PVOID pReserved) 
            {  
            HANDLE hMutex; 
            WriteInfo("WlxLoggedOnSAS \r\n"); //用于记录信息 
     if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL){ //屏蔽CTRL_ALT_DEL,也可以根据特定条件来决定是否要屏蔽 
            //我采用了Mutex来控制是否屏蔽,(注意:要用unicode) 
            hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"_ac952_z_cn_CTRL_ALT_DEL"); 
            if (hMutex){ 
            CloseHandle(hMutex); 
            WriteInfo("disble CTRL+ALT+DEL \r\n"); 
            return WLX_SAS_ACTION_NONE; //将屏幕切换到应用程序桌面,屏蔽掉CTRL+ALT+DEL 
            } 
            else 
            WriteInfo("not disble CTRL+ALT+DEL \r\n"); 
            } 
            return prcWlxLoggedOnSAS ( //这是我从MSGINA.DLL中获取的函数。 
            pWlxContext, 
            dwSasType, 
            pReserved); 
            } 我们要在自己的程序中调用hMutex = CreateMutex(NULL, FALSE, "_ac952_z_cn_CTRL_ALT_DEL");就可屏蔽CTRL+ALT+DEL。 三、安装和注意事项: 在编写GIAN DLL中要注意,GINA DLL使用的是unicode。 GINA DLL的安装: 
    键名 : \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon  
    变量名 : GinaDLL  
    变量类型 : [REG_SZ]  
    内容 : "你的GINA DLL的名称" 如:"NoReboot.DLL: 将你的GINA DLL(NoReboot.dll)拷贝到系统目录下(system32),重启机器,你的GINA DLL(NoReboot.dll)就会运行。 
    如果出现进不了你的系统,那你进入DOS后,将msgina.dll拷贝成你的GINA DLL(NoReboot.dll)就可进入了,或者进入安全模式,删除掉那个键值。   
      

  6.   

    up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up up
      

  7.   

    upupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupup
      

  8.   

    up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up  up
      

  9.   

    up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up   up
      

  10.   

    我只能帮你UP!
    我只能帮你UP!
    我只能帮你UP!
    我只能帮你UP!
    我只能帮你UP!
      

  11.   

    Sorry.
    没有做过
    项一下。
      

  12.   

    在98下和在2000(及xp)下关机是不一样的,在xp下,可以用AlexisRios这个控件控制注销,重启和关机.很好用的.在网上可以找到的
      

  13.   

    q 我不懂,可我看wxjh(农民) 是个高手,他没解决?