Win7下如何屏蔽ctrl+alt+del键?

hook什么的已经失效了,而且将winlogon.exe挂起的方法有问题(挂起中按下ctrl+alt+del,再恢复时弹出了界面),请问还有别的方法没?不要汇编的,只要vc的

0

5个回答

win7下,登录页面是无法通过hook屏蔽的,因为系统登录页面会优先获取到组合键。我之前用过一个方法可以屏蔽ALT+CTRL+DEL,就是注入方式锁定登录页面管理进程**winlogon**,但是如果按了组合键只是暂时不触发,锁定解除后,还会继续触发。在某些情况下,还会造成卡登陆页面。所以我建议你通过注入方式锁定explorer进程,会好一点。进程锁定代码如下

 public static class ProcessFrozenController
    {
        private const int THREADACCESS_SUSPEND_RESUME = 0x0002;

        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern IntPtr OpenThread(uint dwDesiredAccess, bool bInheritHandle, uint threadId);

        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern int SuspendThread(IntPtr hThread);

        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern int ResumeThread(IntPtr hThread);

        [DllImport("kernel32.dll")]
        private static extern uint GetLastError();

        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        private static extern bool CloseHandle(IntPtr hobject);

        public static bool FreezeProcess(string processName, ref string msg)
        {
            Process[] processArray = Process.GetProcesses();
            Process operateProcess = null;

            foreach (Process p in processArray)
            {
                if (p.ProcessName.ToLower().Trim() != processName) continue;

                operateProcess = p;
                break;
            }

            if (operateProcess == null)
            {
                msg = "未找到进程";
                return false;
            }

            List<ProcessThread> handledList = new List<ProcessThread>();
            foreach (ProcessThread pthd in operateProcess.Threads)
            {
                if (SuspendProcessThread(pthd))
                {
                    handledList.Add(pthd);
                    continue;
                }

                foreach (ProcessThread hpthd in handledList)
                {
                    ResumeProcessThread(hpthd);
                }

                msg = "冻结进程失败";
                return false;
            }
            operateProcess.Dispose();

            return true;
        }

        public static void UnfreezeProcess(string processName)
        {
            Process[] processArray = Process.GetProcesses();
            Process operateProcess = null;

            foreach (Process p in processArray)
            {
                if (p.ProcessName.ToLower().Trim() != processName) continue;

                operateProcess = p;
                break;
            }

            if (operateProcess == null)
            {
                return;
            }

            foreach (ProcessThread thd in operateProcess.Threads)
            {
                ResumeProcessThread(thd);
            }
            operateProcess.Dispose();
        }

        #region 私有函数

        private static bool SuspendProcessThread(ProcessThread thread)
        {
            IntPtr threadHandle = OpenThread(THREADACCESS_SUSPEND_RESUME, false, (uint)thread.Id); // Open thread with required permissions
            if (threadHandle == IntPtr.Zero) // If thread pointer is zero, means that the 'OpenThread' function has failed
            {
                return false;
            }
            if (SuspendThread(threadHandle) == -1) // If the result is -1, the funtion has failed
            {
                CloseHandle(threadHandle);
                return false;
            }
            CloseHandle(threadHandle);
            return true;
        }

        private static bool ResumeProcessThread(ProcessThread thread)
        {
            IntPtr threadHandle = OpenThread(THREADACCESS_SUSPEND_RESUME, false, (uint)thread.Id); // Open thread with required permissions
            if (threadHandle == IntPtr.Zero) // If thread pointer is zero, means that the 'OpenThread' function has failed
            {
                return false;
            }
            if (ResumeThread(threadHandle) == -1) // If the result is -1, the funtion has failed
            {
                CloseHandle(threadHandle);
                return false;
            }
            CloseHandle(threadHandle); // Don't forget close thread handle
            return true;
        }

        #endregion
    }

0
jok_219
jok_219 回复yangbo50304: 你需要在操作系统下打开硬盘?如果是用代码获取硬盘文件,应该没问题的。
3 年多之前 回复
yangbo50304
yangbo50304 谢谢你的帮助,不过把explorer.exe进程卡主的话,我的某些打开硬盘的功能就不好使了!!
3 年多之前 回复
0
yangbo50304
yangbo50304 挂起有问题,在挂起中按下ctrl+alt+del,再恢复后就弹出来了。
3 年多之前 回复
yangbo50304
yangbo50304 这个应该就是挂起吧?
3 年多之前 回复

是进程冻结与解冻

管用,Win7和XP系统下都可以屏蔽Ctrl+Alt+Del。但是在解冻winlogon.exe时,会自动弹出系统界面(就是手工按Ctrl+Alt+Del出来的那个界面)。

你试试抓取一个弹出界面的handle,然后通过sendmessage把窗口隐藏

0
yangbo50304
yangbo50304 我看代码了,是suspendthread,你说的获取win登录的handle,怎么获取?enumwindow?
3 年多之前 回复

如果要禁用任务管理器
http://jingyan.baidu.com/article/cbf0e500eafe592eaa2893c4.html

如果实在是想禁止。
可以hook按键 del 键。 接收到del按键 消息判断 ctrl和alt是否按下。 如果按下 那么发送 keybd_event 弹起。
不知道可行不。

0
wawd74520
失落的神庙 回复yangbo50304: 替换掉系统的欢迎界面。
3 年多之前 回复
yangbo50304
yangbo50304 不光是任务管理器的问题,是整个系统的登录界面不想让他显示。
3 年多之前 回复
wawd74520
失落的神庙 回复yangbo50304: 或者直接替换掉系统的任务管理器
3 年多之前 回复
yangbo50304
yangbo50304 Win7下hook已经不好使了。
3 年多之前 回复

们经过加工加工环节改价格

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
禁用和允许Ctrl Alt Del组合按键
这是在外网找到的一个Win7Logon.dll,没有dll源码,这个dll就只有两个导出函数, extern "C" _declspec(dllimport) void SuspendLogon();//挂起进程 extern "C" _declspec(dllimport) void ResumeLogon();//继续进程 然后我写了个VC6的调用dll代码,代码非常简单,就是两个按键分别调用这两个函数,经过实际测试,在Win7和Win10里面都可以禁用CtrlAltDel的组合键。 但是这个禁用有个缺点,就是禁用CtrlAltDel组合键后,会出现无法登录,无法关机,无法重启等情况。因此必须等到系统起来后再执行禁用这个组合键,在关机之前要先允许组合键后才能关机。 适合做全屏软件的机器应用调用,运行软件后禁用组合功能键,然后在要退出软件是可以允许组合键然后执行关机。
Win7 禁止Ctrl+Alt+Del、Win+L等任意系统热键
标 题: 【原创】Win7 修改Winlogon.exe进程一个字节禁止Ctrl+Alt+Del、Win+L等任意系统热键 作 者: heiheiabcd 时 间: 2012-12-01,10:08:55 链 接: http://bbs.pediy.com/showthread.php?t=159346 由于想做个屏幕锁程序,因此想研究了下Win7的Ctrl+Alt+Del,我对w
网上第一个解决win7下禁用Ctrl_alt_del的C#代码
第一个完美解决C# 禁用Ctrl+alt+delete组合键的方案,使用VC++完成,以Dll形式提供
远程线程注入技术 屏蔽ctrl+alt+del
在NT/2000中怎么禁用Ctrl+Alt+Delete?(不能用gina,键盘驱动) 在Windows2000中Ctrl-Alt-Delete组合键的处理如下:Winlogon初始化的时候,在系统中注册了CTRL+ALT+DEL Secure Attention Sequence(SAS)热键,并且在WinSta0 Windows 系统中创建三个桌面。 SAS热键的注册使得Winlogon成为第
C#屏蔽系统热键Ctrl+Alt+Delete的代码尝试。
最近在做一款小软件,需要锁定用户的输入,包括系统热键(Ctrl+Alt+Delete),在网络中寻找良久,发现这些不错的代码。 经过仔细整理,现将这些代码公布,有兴趣的拿去用用。 搜集的过程有些艰辛,从VB6,到VB.NET,到我熟悉的C#。   一、思路分析。 1. 在窗体类Form中,重载消息循环WndProc来实现功能按键的屏蔽 protected override void W
Alt+Ctrl+Del组合键的屏蔽
昨天昊哥让我去想办法实现全局屏蔽,也就是要把Alt+Ctrl+Del这个组合键屏蔽。 去CSDN问了一下,得到的结论是Alt+Ctrl+Del这个组合键是系统直接调用,普通方法无法屏蔽。通过试验,用一般的钩子的确无法屏蔽掉。 然后去问老大,老大告诉我两种方法,一种就是驱动键盘过滤,另外一种就是把winlogin.exe挂起。 第一种牵扯到驱动编程,就不弄了(太麻烦了)。 研究第二种。 wi
禁用Ctrl+Alt+Del组合键
禁用Ctrl+Alt+Del组合键 win+L键
屏蔽Windows按键(除却ALT+CTRL+DELETE)
钩子(hook),指用api来提前拦截并处理windows消息的手段。 全局钩子是系统钩子的一种,当指定的一些消息被系统中任何应用程序所处理时,这个钩子就被调用。 ALT+CTRL+DELETE是微软的操作系统直接处理的按键事件。除此之外,其它的按键都可以由我们来自行控制。 下面,来看一下键盘钩子是如何实现的。 //声明用到的钩子 HHOOK keyHook = NU
VB屏蔽特殊键CTRL,ALT,DEL以及任务管理器
 一,屏蔽特殊键CTRL,ALT,DEL [quote] 屏蔽特殊键Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any,
VC 屏蔽Alt组合键
Win32 屏蔽组合键Alt+
小命令关于Linux 如何禁用Ctrl+Alt+Del
如何禁用Ctrl+Alt+Del
屏蔽ctrl+alt+del键
本资源包含一个类的.h文件和.cpp文件,只要创建类对象调用两个接口函数就可以很方便的屏蔽或者撤销屏蔽ctrl+alt+del键
windows下c# 屏蔽系统atrl+alt+delete组合键
基于c#的屏蔽系统按键,使用于锁屏,广播等控制类软件,win10,win7下同样适用,
锁屏软件,屏蔽win键,屏蔽Alt+Tab键,屏蔽Ctrl+Alt+Del键
简单的锁屏软件,屏蔽win键,屏蔽Alt+Tab键,屏蔽Ctrl+Alt+Del键,也可以修改屏蔽你自定义的按键,
Windows 7 下登录界面里 Ctrl + Alt + Del 无法使用
Windows 7 下登录界面里 Ctrl + Alt + Del 无法使用,可以试一下下面几点方法: 1. 有可能是键盘坏了,外接一个键盘再试试看 2. 不是键盘的问题,可以远程登录到 PC 上,将 Ctrl + Alt + Del 禁用掉,再重新启动 - 关于禁用Ctrl + Alt + Del的方法,参考如下: - 在运行栏里输入 gpedit.msc - 在组策略编辑器 -->
CentOS6.7禁用Ctrl+Alt+Del快捷键
vim /etc/init/control-alt-delete.conf //编辑配置文件注释掉图中这一段  ctrl alt del 三个组和键重启就失效了!
Qt 屏蔽Alt + F4 组合键
Qt 屏蔽Alt + F4 组合键有时项目中会有特殊要求,比如屏蔽Alt + F4组合键,防止用户关闭窗口。 查看帮助文档,有如下说明:[virtual protected] void QWidget::closeEvent(QCloseEvent *event)This event handler is called with the given event when Qt receives a
XP、Win7模拟发送ctrl+alt+delete组合键
转载请标明是引用于 http://blog.csdn.net/chenyujing1234  欢迎大家拍砖   在我们编写远程控制软件的时候,我们会发现要想解锁server端我们就得发送这三个键的虚拟。 下面我说一下解决过程: 1.一开始,决定通过keybd_event()来模拟键盘 [cpp] view
【windows】关于禁用ctrl +alt + delete 等的热键问题
想要禁用window热键, ctrl +alt + delete和ESC+ SHIFT+CTRL等的热键。 不能通过钩子,就想到注册表了。 创建一个.reg文件,将如下写进去, Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] ...
win7屏蔽ctrl+alt+up/down快捷键之解决方案
使用Eclipse好久了,它有十分好用的几个快捷键,比如Ctrl+Alt+UP/DOWN,用于复制当前行的内容,操作简单,将光标放置在要复制的行任意位置,然后按快捷键Ctrl+Alt+UP/DOWN(UP、DOWN分别对应与键盘的上下键按键),即可在当前行的上或下一行复制当前行的内容。       有时候换了电脑或者做了系统,就会出现快捷键冲突。比如在Eclipse里使用Ctrl+Alt+DO
进程防杀与屏蔽WIN 、alt+tab、ctrl+esc等键的方法
//DLL文件//GHook.cpp#define _WIN32_WINNT 0x0400#include #include "HookAPI.h"#include typedef HANDLE (_stdcall *OPENPROCESS_PROC)(DWORD, BOOL, DWORD);OPENPROCESS_PROC pOpenProcess = NULL;HWND g_h
屏蔽Ctrl+Alt+Delete组合键的方法
如果想要屏蔽组合键必须使用全局钩子 创建一个全局钩子,创建钩子SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)keyboardProc,pinstance,0);//挂上钩子 如果想要使用WH_KEYBOARD_LL这个参数,必须在windowNT系统下,如果想要在windowXP中使用,就要在工程的stdafx.h文件里加入两个宏 #define
C#修改注册表 屏蔽 Ctrl+Alt+Del 键
            //屏蔽 Ctrl + Alt + Del 键            Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser;            Microsoft.Win32.RegistryKey key1 = key.CreateSubKey("Software/Micros
Win7通过远程桌面连接Windows Server 2008,向远程桌面中如何发送CTRL+ALT+DEL命令
Ctrl+Alt+Del 总会转到本地桌面,如果需要将 Ctrl+Alt+Del 发送到远程计算机,应使用 Ctrl+Alt+End 组合键。
VB 远线程注入技术 屏蔽 Ctrl+Alt+Del
 在NT平台下,用户登陆是使用Winlogon和GINA——Graphical Identification and Authentication,意思是图形化的身份认证。Winlogon是Windows系统的一部分,它专门提供交互式登陆支持,而GINA则是Winlogon用来实现认证的一个DLL——这个DLL就是msgina.dll。WlxInitialize、WlxActivateUs
如何去掉Windows开机需要按Ctrl+Alt+Del
1.开始---运行 输入 gpedit.msc 进入组策略编辑器 2.打开组策略编辑器之后,依次找到 计算机配置--安全设置--- 安全选项,找到“交互式登陆,不需要按 ctrl+alt+delete” 3.点击打开“交互式登陆,不需要按 ctrl+alt+delete”选择设置为“已启用”   ...
按下Ctrl+ALT+DEL.不直接出现任务管理器.而是出现一个窗口
开始——设置——控制面板——用户帐户——更改用户登陆或注销的方式——选中=使用欢迎屏幕 试试CTRL+SHIFT+ESC。 如果还是没有反应那好像taskmgr被病毒替换了,从安装盘上再考一个。 以下仅参考: 一、任务管理器的运行文件丢失: 任务管理器的运行文件是%SystemRoot%\system32\TaskMgr.EXE,但是当这个文件被更名或者被删除就会从% systemroot%\sy
远程桌面中如何发送CTRL+ALT+DEL命令或修改密码
在远程桌面上:Ctrl+Alt+End,就可以达到Ctrl+Alt+Del的效果。也可以修改密码了! Winxp或2003可以。
MFC中如何拦截Alt+?、Ctrl+?、Ctrl+Alt+?、Ctrl+Shift+?、Ctrl+Shift+Alt+?、Shift+?系列的组合键,以及拦截Alt+F4,回车和Esc键
程序的下载地址为:http://download.csdn.net/detail/xing_yufei/5056315   看过好多别人写的程序,有支持热键呼叫的,并且热键可以在程序中自定义设定。在热键设定的界面,选中一个编辑框,按下你想设置的热键,编辑框中就会显示出你所按下的热键。按照下面的方法,就可以实现这个功能。 拦截Alt+?组合键比较特殊,因为在这种单纯按下Alt的情况下,产生的消
去掉WINDOWS SERVER 开机按CTRL+ALT+DEL登陆的方法
如果从稳定的角度来看的话,你完全可以选择Windows Server 2003作为自己的操作系统。但是,Windows Server 2003在每次登陆的时候都要按CTRL+ALT+DEL,实在是麻烦,要想解决这个问题,其实很简单,方法如下: &amp;lt;1&amp;gt;开始-&amp;gt;管理工具-&amp;gt;本地安全策略-&amp;gt;&quot;本地策略&quot;和&quot;安全选项&quot;展开&quot;交互式登陆&quot; &amp;lt;2&amp;gt;双击&quot;
远程桌面如何向远程的计算机发送ctrl+alt+del
网络上有人说:对远程桌面连接进行设置,将组合健反映给远端机器。 可是windows2003自带的远程桌面里没有相应的选项,只得下了个远程桌面连接再试。 设置方法:如果你的主控端是XP或2K系统,运行远程桌面连接时,展开“选项”,在“本地资源”标签的中间部分应用windows组合键,选择“远程计算机上”就可能啦。 可最终也没有把ctrl+alt+del组合键发送到远程计算机端,但其它的组合键可
Centos关闭Ctrl+Alt+Del快捷键防止重新启动
Centos操作系统只要按下Ctrl+Alt+Del快捷键,系统就会自动重新启动。如果数据正在写入,无意间按下Ctrl+Alt+Del快捷键,不会有任何提示和确认,系统就会直接重新启动,这样会造成服务器的突然宕机,造成很多麻烦,所以最好关闭此快捷键,以防误操作造成重新启动。 Centos 5.x关闭方式 关闭Ctrl+Alt+Del快捷键,需要编辑/etc/inittab文件,将对应的内容注释
使用java屏蔽Esc,Ctrl,F1-12等按键
用到jna-4.2.2.jar和jna-platform-4.2.2.jar package com.xxx.proj.browser; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.H...
在远程桌面下发送Ctrl+Alt+Del!
Ctrl+Alt+End 组合键
Windows Server 2012 禁止使用Ctrl+Alt+Del 以及禁止开机启动服务器管理器
1 运行 Gpedit.msc 2 禁止开机启动服务器管理器
VB怎样屏蔽 Alt+F4键
怎样屏蔽 Alt+F4键以下代码在模块------------ 程序代码:   'http://baidu.bhdata.com'石陆软件屋Public Declare Sub mouse_event Lib &quot;user32&quot; (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As...
c#调用api实现屏蔽alt+ctrl+del及锁屏功能
c#调用api实现屏蔽alt+ctrl+del及锁屏功能
在2000XP2003下屏蔽Ctrl + Alt + Del组合键.zip
在2000XP2003下屏蔽Ctrl + Alt + Del组合键.zip
ctrl+alt+方向键 与win7的旋转屏幕冲突解决
转载: http://blog.csdn.net/allanking666/article/details/5491933 桌面右击-->图形属性 看到如下图片就知道该怎么做了,呵呵!
Mac虚拟机怎么打开 ctrl+alt+delete
开虚拟机的时候,点了注销,再次进入需要 ctrl+alt+delete  但是mac系统不管怎么按 ctrl+alt+delete 都没有反应。 解决方法:多按一个fn就行了 fn+control+option(alt)+delete
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 win7网页制作课程 win7网页制作教程视频