启用/禁用任务管理器

3
        public static void ToggleTaskManager(string keyValue)
        {
            RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
            objRegistryKey.SetValue("DisableTaskMgr", keyValue);
            objRegistryKey.Close();
        }


        private void btnDisableTaskManager_Click(object sender, EventArgs e)
        {
            ConsoleDisplay.ToggleTaskManager("1");
        }

        private void btnEnableTaskManager_Click(object sender, EventArgs e)
        {
            ConsoleDisplay.ToggleTaskManager("0");
        }

使用上述功能禁用/启用任务管理器,但当我第一次禁用时,它会正确地禁用。但是,当我点击启用按钮时,任务管理器无法启用。

也许您需要重新启动计算机才能使更改生效? 注册表键是否已更改? - jAC
是的,当单击禁用“0”和启用“1”时,注册表键会发生更改...我已经重启了计算机,但更改没有生效。 - ND's
4
应用程序不应该修改系统策略,只有网络管理员才能这样做,而实现的方式是通过组策略对象。 - Raymond Chen
5个回答

5

是的,delete命令可以使用。也就是说,使用以下代码进行切换:

    public void ToggleTaskManager()
    {
        RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
            @"Software\Microsoft\Windows\CurrentVersion\Policies\System");
        if (objRegistryKey.GetValue("DisableTaskMgr") == null)
            objRegistryKey.SetValue("DisableTaskMgr", "1");
        else
            objRegistryKey.DeleteValue("DisableTaskMgr");
        objRegistryKey.Close();
    }

或者使用以下代码进行设置:

    public void SetTaskManager(bool enable)
    {
        RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
            @"Software\Microsoft\Windows\CurrentVersion\Policies\System");
        if (enable && objRegistryKey.GetValue("DisableTaskMgr") != null)
            objRegistryKey.DeleteValue("DisableTaskMgr");
        else
            objRegistryKey.SetValue("DisableTaskMgr", "1");
        objRegistryKey.Close();
    }

1
尝试删除键而不是将值设置为假。

请查看此文章:http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C - David C

0

若要禁用任务管理器,您必须在注册表中设置一个DWord字符串(放在用户本地机器而不是当前用户下)。 请使用以下代码。(在Windows 7中无效)

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",true);
key.SetValue("DisableTaskMgr", "1", RegistryValueKind.DWord);
key.Close();

对于那个用户应用程序必须在管理员权限下运行。更改app.manifest中的以下更改以在管理员权限下使用应用程序

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

0

试试这个:

 public void SetTaskManager(bool enable)
    {
        RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
            @"Software\Microsoft\Windows\CurrentVersion\Policies\System");
        if (enable && objRegistryKey.GetValue("DisableTaskMgr") != null)
            objRegistryKey.DeleteValue("DisableTaskMgr");
        else
            objRegistryKey.SetValue("DisableTaskMgr", "1");
        objRegistryKey.Close();
    }

启用/禁用:(抱歉,我的英语很糟糕...)

 private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.F1:
                {
                    SetTaskManager(Convert.ToBoolean(1));
                }
                break;
        }

注意:您必须具有管理员访问权限才能运行该程序。

虽然此代码可能回答了问题,但提供关于为什么和/或如何回答问题的附加上下文可以提高其长期价值。 - JAL

0

答案4是可以的,但您需要再加上一小段代码,这是100%正确的(RegistryValueKind.DWord);

RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
        @"Software\Microsoft\Windows\CurrentVersion\Policies\System");
        if (objRegistryKey.GetValue("DisableTaskMgr") == null)
            objRegistryKey.SetValue("DisableTaskMgr", "1", RegistryValueKind.DWord);
        else
            objRegistryKey.DeleteValue("DisableTaskMgr");
        objRegistryKey.Close(); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接