【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]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,06,00,00,00,00,00,5b,e0,00,00,5c,e0,00,00,38,00,00,00,38,e0,00,00,01,00,00,00,00,00,00,00

00,00,00,00,00,00,00,00:固定的不需要改

06:代表禁用多少个按键+1

5b,e0,00,00:5b,e0代表window ,00,00代表禁用

5c,e0:禁用window

38,00  

38,e0

01,00

00,00,00,00:结束的标记

当然这个是在注册表里面写的,但是在C# 代码中就不能这么写了,

RegistryKey mreg = Registry.LocalMachine;
            string strValue = @"SYSTEM\CurrentControlSet\Control\Keyboard Layout";
            mreg = mreg.OpenSubKey(strValue, true);
            string childpath = mreg == null ? mreg.CreateSubKey(strValue).ToString() : "";//路径不存在,创建好预设路径
            mreg.SetValue("Scancode Map", new byte[] { 00, 00, 00, 00, 00, 00, 00, 00, 06, 00, 00, 00, 00, 00, 91, 224, 00, 00, 92, 224, 00, 00, 56, 00, 00, 00, 56, 224, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00 }, RegistryValueKind.Binary);
            mreg.Flush();
            mreg.Close();

就能搞定,把注册表的改成我们需要禁用的按键了,具体的大家在网上都可以搜到。

删除注册表中二进制的值: 

               RegistryKey R_local = Registry.LocalMachine;
                RegistryKey R_run = R_local.CreateSubKey(@"SYSTEM\CurrentControlSet\Control\Keyboard Layout");
                R_run.DeleteValue("Scancode Map", false); //adobe是值得名称
                outcome = true;
                R_run.Close();
                R_local.Close();

完美,哈哈哈!全部禁用了以上快捷键,但是必须要重启电脑才会生效,当然了这个禁用了以后就是永远禁用除非恢复注册表,所以explorer.exe和以上快捷键一定要谨慎使用,要不然电脑就要重做系统了!

 

你可能感兴趣的:(C#,window)