Enabling and Disabling TaskManager





5.00/5 (6 votes)
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 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 using Microsoft.Win32;
public enum TaskManager
{
Enabled,
Disabled
}
As you can see our TaskManager enum
is Really straight-forward. Now for the class
that holds our RegistryKey
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
protected override void OnLoad(EventArgs e)
{
RegistryKey regkey = RegEdit.SetKey(TaskManager.Disabled);
regkey.Close();
}
and OnFormClosing
To Enable
protected override void OnFormClosing(FormClosingEventArgs e)
{
RegistryKey regkey = RegEdit.SetKey(TaskManager.Enabled);
regkey.Close();
}