在winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序

在需要屏蔽双击窗体最大化、最小化、关闭、拖拽窗体中写入以下代码,可以根据需要取舍代码: 

protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x112)
            {
                switch ((int)m.WParam)
                {
                    //禁止双击标题栏关闭窗体
                    case 0xF063:
                    case 0xF093:
                        m.WParam = IntPtr.Zero;
                        break;

                    //禁止拖拽标题栏还原窗体
                    case 0xF012:
                    case 0xF010:
                        m.WParam = IntPtr.Zero;
                        break;

                    //禁止双击标题栏
                    case 0xf122:
                        m.WParam = IntPtr.Zero;
                        break;
                    

                    //允许关闭按钮
                    case 0xF060:
                        //m.WParam = IntPtr.Zero;
                        break;

                    //允许最大化按钮
                    case 0xf020:
                        //m.WParam = IntPtr.Zero;
                        break;

                    //允许最小化按钮
                    case 0xf030:
                        //m.WParam = IntPtr.Zero;
                        break;

                    //允许还原按钮
                    case 0xf120:
                        //m.WParam = IntPtr.Zero;
                        break;

                    default:
                        m.WParam = IntPtr.Zero;
                        break;
                }
            }
            base.WndProc(ref m);
        }

 在winform 中利用注册表禁用或启用任务管理器:

禁用任务管理器:
Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System").SetValue("DisableTaskMgr", 1);
启用任务管理器:
Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System").SetValue("DisableTaskMgr", 0);

上面使用注册表功能需要管理员权限,如果没有管理员权限运行程序会报错,可以加入是否以管理员权限运行的判断:

 

    public class Utils
    {
        public static bool IsAdministrator()
        {
            WindowsIdentity current = WindowsIdentity.GetCurrent();
            WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
            return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
        }
    }

 

posted @ 2019-12-23 09:20  星空天宇  阅读(615)  评论(0编辑  收藏  举报