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

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

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
    }

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

是进程冻结与解冻

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

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

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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
屏蔽Ctrl alt del
http://topic.csdn.net/u/20101102/18/1bc45671-00e4-47c9-bff4-197369d08194.html?74453 为此贴子而编译 给点分吧。
键盘驱动 , 屏蔽 ctrl alt del 键 ,
想屏蔽ctrl alt del 键,有人建议写一个键盘驱动来实现。rn没有这方面经验,希望大家给个意见。
屏蔽Alt 和 Ctrl 键
请教各位大侠,rnrn如何完全屏蔽 Ctrl 和 Shift键?rn或者如何屏蔽所有的快捷键(有点难)?rnrnrn解决问题这,40分相送!!rnrn谢谢各位捧场
在2000XP2003下屏蔽Ctrl + Alt + Del组合键.rar
在2000XP2003下屏蔽Ctrl + Alt + Del组合键.rar
在2000XP2003下屏蔽Ctrl + Alt + Del组合键.zip
在2000XP2003下屏蔽Ctrl + Alt + Del组合键.zip
求win98中屏蔽ctrl、alt、del三个键程序
rt
Mask "CTRL + ALT + DEL"
怎么把它屏蔽掉。rnrnUnder Windows 2000
CTRL,ALT,DEL三键问题!
单个使用没有问题,可是三个组合起来用于WIN2000开机就不能起到作用了,这三个键每个有两个,尝试不同的组合都不能用,请问是什么原因!排除电脑问题,因为其他的键盘可以开机!请问高手,给予解答!
如何屏蔽ALT键?
-
怎样屏蔽ctrl,alt之间的那个键
就是激活开始菜单的键
请问如何锁住"alt + ctrl + del" 的组合键?
谢了
如何防止使用者按下 CTRL + ALT + DEL
如何防止使用者按下 CTRL + ALT + DEL,谢谢!rnrn
请问如何屏蔽alt键?
如题
在2000/XP/2003下屏蔽Ctrl + Alt + Del组合键
//--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //作者  :黎富平 //网上呢称:聪聪 //Home Page :http://www.soft520.com //E-Mail :admin@soft520.com //日期  :2004-8-23 //功能  :根据BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl + Alt + Del组合键的 //     技术,在Borland C++Builder 6.0 Patch4下编写远程线程注入的代码,封装 //     成DLL并输出EnabledKey和DisabledKey两个函数,使得可以在Delphi,VB等程 //     中可以使用,本程序在Windows Server 2003中文版平台下面测试通过 //开发语言:Borland C++Builder 6.0 Patch4 //文件说明:SASHOOK.dll  屏蔽Ctrl + Alt + Del的DLL //     RunDLL.dll  负责将SASHOOK.dll远程线程注入的DLL,输出EnabledKey和 //     DisabledKey两个函数 //     RunDLLExample.exe 对RunDLL.dll的两个函数调用  //鸣谢  :BCB_FANS(四大名捕之追杀令) //版权  :转载请注明原作者:) //    :以下为 BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl + Alt + Del组合键的 //     技术说明 //原理  :采用远程线程注入技术,装载一个DLL到Winlogon进程,然后截获SAS窗口的窗 //     口过程,接管WM_HOTKEY消息,以达到屏蔽Ctrl + Alt + Del之目的。 //技术比较:关于在2000下面如何屏蔽Ctrl + Alt + Del组合键,一种常被提到的解决方法就 //   是使用自己写的GINA去替换MSGINA.DLL,然后在WlxLoggedOnSAS里边直接返回 //   WLX_SAS_ACTION_NONE。嘿嘿,说到底这并不是真正地屏蔽了这个组合键,只是 //   直接返回WLX_SAS_ACTION_NONE时,Winlogon进程又自动从"Winlogon"桌面切换 //   回原来的"Default"桌面了,而不是显示安全对话框,所以看起来被屏蔽了:), //   使用那种方法明显地看到桌面在闪烁!但是使用本文的方法时,你不会看到任 //   何闪烁!
如何屏蔽左alt键?
我整了一个 directX 游戏,需要用左alt键和空格键的。然而,在窗口中按了alt再按空格,就会弹出左上方的控制菜单,很不爽。请问各位,有什么方法能把左alt键屏蔽吗?
怎么屏蔽Del键?
我想在一个窗口中屏蔽Delete键,就是当按下Delete时,会显示信息框,但不执行Delete操作。请问该怎么做?
Delphi屏蔽热键Ctrl Alt Del的源码实例.rar
Delphi在2000XP2003下屏蔽Ctrl Alt Del组合键,Delphi真正屏蔽的原理是这样的:利用远程注入技术,加载DLL到Winlogon进程,然后截获SAS窗口并接管WM_HOTKEY消息,以达到屏蔽Ctrl Alt Del的目的。根据BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl Alt Del组合键的技术,在Borland C Builder 6.0 Patch4下编写远程线程注入的代码,封装成DLL并输出EnabledKey和DisabledKey两个函数,使得可以在Delphi,VB等程中可以使用,本程序在Windows Server 2003中文版平台下面测试通过。
VC 通过远程线程屏蔽ctrl alt del热键.rar
VC 通过远程线程屏蔽ctrl alt del热键,
求救,如何屏蔽del键和删除键
用的是xcombo控件,类似combobox,但是现在要防止删除内容,想用屏蔽del键的方式。rn那位高手知道不?请教
怎么才能使Ctrl 和del 和Alt三个键无效
rn大哥:rn怎么才能使Ctrl 和del 和Alt三个键无效?rn和windows键无效?
winfrom屏蔽Alt键~~
winfrom屏蔽Alt键的方法,
winform 屏蔽 ctrl + alt + delete
看了很多 vc 的例子,不知道哪里有 c# 的啊,
屏蔽ALt键
点击ALt会激活菜单,怎么能在点击ALT的时候不激活菜单。
互换CTRL和ALT键功能.
双击加入注册表即可. 会把CTRL键和ALT键的功能给调换. 适合用惯了mac转到windows不适应ctrl+v进行复制的小伙伴
vfp 屏蔽CTRL 键!
在梅子论坛看帖时,发现一个屏蔽WIN键的帖子,里面有一个DLL,可以调用里面的函数进行屏蔽,而且dkfdtf 大侠也回复了,只是原话:rnrn就两个导出函数,一个启动,一个停止。rnrnDECLARE Long InitHOOK IN hook.dllrnDECLARE Long StopHOOK IN hook.dllrn?InitHOOK() && 初始化钩子并锁定 Win 键rn?StopHOOK() && 释放钩子rnrn注意大小写 !rnrn这个DLL 就上传到这里:rnrnhttp://access911.net/csdn/FileDescription.asp?mdb=2009-8-2&id=5rnrn测试后果然屏蔽了WIN键,但有WIN键相同功能的还有:CTRL+ESC 组合键,而没有被屏蔽,因此希望能够同样屏蔽这个CTRL+ESC 组合键,看看各位大侠又没有办法,在网上查看资料,看到这个:rnrnhttp://zhidao.baidu.com/question/5377246.htmlrnrn里面有很多C语言代码,就是看不懂,看看大侠们能不能做出个DLL 来屏蔽CTRL+ESC 键!不过又说,屏蔽CTRL+ESC 不如屏蔽rnCTRL一个键,因为屏蔽这个,估计等于屏蔽了,不小组合功能键!rn谢谢各位大侠!
linux 使ctrl + alt + del失效
linux 如何 使ctrl + alt + del失效
禁用和允许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组合键后,会出现无法登录,无法关机,无法重启等情况。因此必须等到系统起来后再执行禁用这个组合键,在关机之前要先允许组合键后才能关机。 适合做全屏软件的机器应用调用,运行软件后禁用组合功能键,然后在要退出软件是可以允许组合键然后执行关机。
c# 如何屏蔽ctrl alt delete?
c# ctrl alt delete
怎样使ctrl + alt + del失效?
3KS
VB类库发送Ctrl + Alt + Del命令
VB类库发送Ctrl + Alt + Del命令;VB源码,源码中试用VB代码调用系统API向WinLogon进程注入汇编指令,然后远程过程调用,用以发送Ctrl + Alt + Del命令
ntldr is missing 按 alt ctrl ,del restear
系统是xp2,突然出现这个问题,不知道怎么解决
WINNT4.0下如何屏蔽Ctrl,Alt等快捷键
SystemParametersInfo(SPI_SETSCREENSAVERRUNNIGN,1,nOldVal,0)不行哈
求救!!!server 2003 ctrl alt del失效
下午对自己的工作用机server 2003做了一次优化,估计是删除了什么注册表的信息,没有备份,现在重启完进入登录页面rn那三个组合键失灵,不能进入密码输入框了,恢复最后一次配置跟安全模式都不能使用组合键进入~rn请问该如何解决啊???rn这边先谢谢各位啦!!!
请问如何屏避Ctrl和ALT键?
请问如何屏避Ctrl和ALT键?
VB6.0怎样获取用户按下 CTRL 键 ALT键 DEL键 同时按下的键代码
各位朋友 小弟想做一个VB程序 rn rn效果是用户按下 CTRL 键 ALT键 DEL键 三个键后在关闭程序体自己rnrnrn1. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)rnIf KeyCode =( )And KeyCode = ( ) And KeyCode =( )ThenrnUnload MernEnd IfrnrnrnEnd Subrnrn2. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)rnIf KeyCode = ( ) And ( ) And ( ) ThenrnUnload MernEnd IfrnrnrnEnd Subrnrn这两个那个管用?rnrnrn扩号里应该怎么写
屏蔽alt+tab,ctrl+esc,开始键(ctrl和alt中间的那个) !!
怎样屏蔽alt+tab,ctrl+esc,开始键(ctrl和alt中间的那个) !!
谁能教我屏蔽del键
我所有的代码只要一按del键一定退出,怎样才能将del键屏蔽?请大侠们指点!
急问:Win7 操作系统下如何写代码(Delphi)屏蔽Ctrl + Alt + Del?试了很多方法都行不通
急问各位大虾,Win7 操作系统下如何写代码(Delphi)屏蔽Ctrl + Alt + Del?rn我试了很多方法都行不通,如:SystemParametersInfo,写注册表,SASHook的DLL注入,用定时器来关闭任务管理器进程等等;rn目前找到的所有关于屏蔽CAD的解决办法都只能在XP,2000下有效,除了CAD热键不能屏蔽外,其它热键基本都能控制,如果实在不行的话,是否可以通过操作系统本身的配置来屏蔽掉这个热键。
在视图中如何屏蔽del删除键??????
在视图中如何屏蔽del删除键??????
在keypress中如何屏蔽del键??
如题
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview