Click here to Skip to main content
15,881,413 members
Articles / Desktop Programming / Windows Forms
Tip/Trick

Enabling and Disabling TaskManager

Rate me:
Please Sign up or sign in to vote.
5.00/5 (6 votes)
27 Jun 2011CPOL 43.7K   5   8
Please note before we get started that this program must be ran as Administrator.
There are a few Ways that we can do this Check out the MSDN site for the First Method windowsimpersonationcontext. another way would be to add an Application Manifest to your project.

XML
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

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

            Specifying requestedExecutionLevel node will disable file and registry virtualization.
            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- A list of all Windows versions that this application is designed to work with. Windows will automatically select the most compatible environment.-->

      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
      
    </application>
  </compatibility>
  
  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
  <!-- <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>-->

</asmv1:assembly>


Now change the level asInvoker to requireAdministrator as done above on line 24 or just copy and paste this into the app.manifest file. Now that we have this done we will have two protected overrides being the OnLoad and OnClosing Events. OnLoad will Disable the TaskManager and OnClosing will Enable the TaskManager.
To Download the .reg registry scripts to do this you can get those here TaskMgrED Now to see how the code works :)
First we will have an enum that contains our TaskManager Settings and an class That will give us our RegistryKey based on whether the TaskManger is Enabled or Disabled.
you will need to add
C#
using Microsoft.Win32;

C#
public enum TaskManager 
        { 
            Enabled,
            Disabled
        }


As you can see our TaskManager enum is Really straight-forward. Now for the class that holds our RegistryKey

C#
public static class RegEdit
        {
            public static RegistryKey SetKey(TaskManager command)
            {
                RegistryKey mKey;
                string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
                mKey = Registry.CurrentUser.CreateSubKey(subKey);
                switch (command)
                {
                    case TaskManager.Enabled:
                        mKey.SetValue("DisableTaskMgr", 0);
                        break;
                    case TaskManager.Disabled:
                        mKey.SetValue("DisableTaskMgr", 1);
                        break;
                }
                return mKey;
            }
        }


To Call the methods we will use OnLoad to Disable
C#
protected override void OnLoad(EventArgs e)
        {
            RegistryKey regkey = RegEdit.SetKey(TaskManager.Disabled);
            regkey.Close();            
        }

and OnFormClosing To Enable
C#
protected override void OnFormClosing(FormClosingEventArgs e)
        {
            RegistryKey regkey = RegEdit.SetKey(TaskManager.Enabled);
            regkey.Close();            
        }

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
I do not claim to be wrong! I just rarely ever write.

Comments and Discussions

 
Questiongetting access denied error Pin
Mahendra Saini28-Jul-14 21:24
Mahendra Saini28-Jul-14 21:24 
GeneralRe: Never mind.And I'm about to expect your new article.Come on!... Pin
Wei Shen27-Jun-11 15:47
Wei Shen27-Jun-11 15:47 
GeneralRe: I have given it thought yes, able to accomplish as of this m... Pin
charles henington27-Jun-11 15:41
charles henington27-Jun-11 15:41 
GeneralReason for my vote of 5 OK,good article Pin
Wei Shen27-Jun-11 15:38
Wei Shen27-Jun-11 15:38 
GeneralRe: Sorry was slow on the reply lol Pin
charles henington27-Jun-11 15:41
charles henington27-Jun-11 15:41 
GeneralI haven't come across anyone yet who can...Can you? If So Pl... Pin
charles henington27-Jun-11 15:32
charles henington27-Jun-11 15:32 
GeneralRe: Sorry,I can't.Maybe unsafe C++ code can make it.Do you ever ... Pin
Wei Shen27-Jun-11 15:36
Wei Shen27-Jun-11 15:36 
GeneralReason for my vote of 3 This is not a good way to disable th... Pin
Wei Shen27-Jun-11 15:26
Wei Shen27-Jun-11 15:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.