2013-05-17 38 views
2
 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"); 
     } 

对于禁用/启用TaskManager使用上述功能,但当我禁用第一次然后它禁用correct.But当我点击启用按钮TaskManager未启用。启用/禁用任务管理器

+0

也许您需要重新启动计算机才能使更改生效? 注册表项是否被更改? – jAC

+0

是单击禁用“0”并单击启用“1”时,注册表项已更改...并且我重新启动了pc,但更改不起作用。 – John

+4

应用程序不应修改系统策略。只有网络管理员应该这样做,并且通过组策略对象来实现它。 –

回答

4

是,删除会工作。手段,使用此代码切换:

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(); 
    } 
+0

谢谢...像一个魅力工作 – John

1

尝试删除键,而不是值设置为False

+0

我怎么生成 – John

+0

看看这篇文章:http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C –

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

对于启用/ Desable(对不起,我的英语很不好...)

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

注意:你必须有一个dministrator访问运行程序。

+0

虽然这段代码可能会回答这个问题,但为什么和/或代码如何回答这个问题提供了额外的背景,这提高了它的长期价值。 – JAL

0

解答4 is Okey但是Uu需要一个更多的litte代码这个%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();