Tuesday, August 3, 2010

Disable/Enable Javascript in Internet Explorer programmatically


Hello everybody,
Currently I was involved in a project where I had to disable Javascript from registry.
After a lot of searching and googling I came across these links:


But for me, I had to do it programmatically so I started writing the code and after some issues and problems, It worked. :).
I came across number of similar questions on other forums. Owing to my big heart, I decided to blog it and here I am:
I am not going in much detail as starting from create a Website or web Application or windows appluication and blah blah blah!
Assuming you are all smart programmers, I would start with creating a button and working on its click.
In the design page: 

 Just create a button on the page with text as Disable Javascript and name as 

btnDisableJavascript

In the code page:

Namespace: using Microsoft.Win32;

   //Click of btnDisableJavascript
    protected void btnDisableJavascript_Click(object sender, EventArgs e)
    {
         bool disable = false;

        if (btnDisableJavascript.Text == "Disable Javascript")
        {
            disable = true;
            btnDisableJavascript.Text = "Enable Javascript";
        }
        else
        {
            disable = true;
            btnDisableJavascript.Text = "Disable Javascript";
        }
        EnableDisableJavaScript(disable);
    }

    //Disable/Enable Javascript from code(Registry):
    public static void EnableDisableJavaScript(bool enable)
    {
         //get the registry key for Zone 3(Internet Zone)
        RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", true);
        //get the registry key for Zone 1(Local Intranet Zone)
        RegistryKey keyLocalFiles = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1", true);
        //get the registry key for Zone 1(My Computer)
        RegistryKey keyMyComputer = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0", true);
        if (value == true)
        {
            try
            {
                if (key != null)
                {
                    //1400 is the DWORD for Scripting: Active scripting
                    //setting of "3" prohibits the specific action i.e. disable for this case
                    key.SetValue("1400", "3", RegistryValueKind.DWord);
                    keyLocalFiles.SetValue("1400", "3", RegistryValueKind.DWord);
                    keyMyComputer.SetValue("1400", "3", RegistryValueKind.DWord);
                }
                else
                {
                    key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3");
                    keyLocalFiles = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1");
                    keyMyComputer = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0", true);
                    //1400 is the DWORD for Scripting: Active scripting
                    //setting of "3" prohibits the specific action i.e. disable for this case
                    key.SetValue("1400", "3", RegistryValueKind.DWord);
                    keyLocalFiles.SetValue("1400", "3", RegistryValueKind.DWord);
                    keyMyComputer.SetValue("1400", "3", RegistryValueKind.DWord);
                }

            }
            catch (Exception ex)
            {

            }
        }
        else
        {
            try
            {
                if (key != null)
                {
                    //setting of "0" sets a specific action as permitted i.e. enable for this case
                    key.SetValue("1400", "0", RegistryValueKind.DWord);
                    keyLocalFiles.SetValue("1400", "0", RegistryValueKind.DWord);
                    keyMyComputer.SetValue("1400", "0", RegistryValueKind.DWord);
                }
                else
                {
                    key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3");
                    keyLocalFiles = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1");
                    keyMyComputer = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0");
                    //1400 is the DWORD for Scripting: Active scripting
                    //setting of "0" sets a specific action as permitted i.e. enable for this case
                    key.SetValue("1400", "0", RegistryValueKind.DWord);
                    keyLocalFiles.SetValue("1400", "0", RegistryValueKind.DWord);
                    keyMyComputer.SetValue("1400", "0", RegistryValueKind.DWord);
                }

            }
            catch (Exception ex)
            {

            }
        }
    }

When you'll run, the disable javascript button is displayed as follows:

Click this button, after processing is complete, go to Tools>Internet Options< Active Scripting

you can see the checkbox for Disable is checked as below

and the Text of the button is changed to Enable Javascript:
Now if you run any website involving javascript, you can very easily figure out that javascript is disable:

For example try and run www.msn.com; you'll not be able to see any thing over ther as the javascript is disabled.

Click this button now and after processing is complete, Tools>Internet Options< Active Scripting

you can see the checkboxes for you can see the checkbox for Enable is checked as below:





Now after scripting is enabled try and run www.msn.com; you'll it will run as it used to.


And thats a yippi and happy case.
As our target is achieved.

Thats all for "Disable/Enable Javascript in Internet Explorer programmatically".

Catch you all some other day with some other knowledge stuff.

6 comments:

  1. what is "value"?

    Line doesn't compile:

    if (value == true)

    ReplyDelete
  2. value is basically enable...
    its a mistake from my side..
    I apologize

    ReplyDelete
  3. Great Post buddy saved a lot of my time thanks

    ReplyDelete
  4. Thank You so much. This saved my time.
    Great Post

    ReplyDelete
  5. after deploying the code in the server, the client side IE settings wont change right? how to handle that situation?

    ReplyDelete
  6. Thanks for the great post.. it saved lot of my time... One thing I need to know initially ( may be in Page_Load) is to check if the script is enabled or not. how to do that?

    ReplyDelete