在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);
}
}