[ACCEPTED]-Any way to turn the "internet off" in windows using c#?-c#

Accepted answer
Score: 49

If you're using Windows Vista you can use 11 the built-in firewall to block any internet 10 access.

The following code creates a firewall 9 rule that blocks any outgoing connections 8 on all of your network adapters:

using NetFwTypeLib; // Located in FirewallAPI.dll
...
INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FWRule"));
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
firewallRule.Description = "Used to block all internet access.";
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT;
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";
firewallRule.Name = "Block Internet";

INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Add(firewallRule);

Then remove 7 the rule when you want to allow internet 6 access again:

INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Remove("Block Internet");

This is a slight modification 5 of some other code that I’ve used, so I 4 can’t make any guarantees that it’ll work. Once 3 again, keep in mind that you'll need Windows 2 Vista (or later) and administrative privileges 1 for this to work.

Link to the firewall API documentation.

Score: 5

This is what I am currently using (my idea, not 7 an api):

System.Diagnostics;    

void InternetConnection(string str)
{
    ProcessStartInfo internet = new ProcessStartInfo()
    {
        FileName = "cmd.exe",
        Arguments = "/C ipconfig /" + str,
        WindowStyle = ProcessWindowStyle.Hidden
    };  
    Process.Start(internet);
}

Disconnect from internet: InternetConnection("release");
Connect to internet: InternetConnection("renew");

Disconnecting will just remove 6 the access to internet (it will show a caution 5 icon in the wifi icon). Connecting might 4 take five seconds or more.

Out of topic:
In any cases 3 you might want to check if you're connected 2 or not (when you use the code above), I 1 better suggest this:

System.Net.NetworkInformation;

public static bool CheckInternetConnection()
{
   try
   {
       Ping myPing = new Ping();
       String host = "google.com";
       byte[] buffer = new byte[32];
       int timeout = 1000;
       PingOptions pingOptions = new PingOptions();
       PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
            return (reply.Status == IPStatus.Success);
    }
    catch (Exception)
    {
       return false;
    }
}
Score: 4

There are actually a myriad of ways to turn 5 off (Read: break) your internet access, but 4 I think the simplest one would be to turn 3 of the network interface that connects you 2 to the internet.

Here is a link to get 1 you started: Identifying active network interface

Score: 1

Here's a sample program that does it using 11 WMI management objects.

In the example, I'm 10 targeting my wireless adapter by looking 9 for network adapters that have "Wireless" in 8 their name. You could figure out some substring 7 that identifies the name of the adapter 6 that you are targeting (you can get the 5 names by doing ipconfig /all at a command line). Not 4 passing a substring would cause this to 3 go through all adapters, which is kinda 2 severe. You'll need to add a reference to 1 System.Management to your project.

using System;
using System.Management;

namespace ConsoleAdapterEnabler
{
    public static class NetworkAdapterEnabler
    {
        public static ManagementObjectSearcher GetWMINetworkAdapters(String filterExpression = "")
        {
            String queryString = "SELECT * FROM Win32_NetworkAdapter";
            if (filterExpression.Length > 0)
            {
                queryString += String.Format(" WHERE Name LIKE '%{0}%' ", filterExpression);
            }
            WqlObjectQuery query = new WqlObjectQuery(queryString);
            ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher(query);
            return objectSearcher;
        }

        public static void EnableWMINetworkAdapters(String filterExpression = "")
        {
            foreach (ManagementObject adapter in GetWMINetworkAdapters(filterExpression).Get())
            {
                //only enable if not already enabled
                if (((bool)adapter.Properties["NetEnabled"].Value) != true)
                {
                    adapter.InvokeMethod("Enable", null);
                }
            }
        }

        public static void DisableWMINetworkAdapters(String filterExpression = "")
        {
            foreach (ManagementObject adapter in GetWMINetworkAdapters(filterExpression).Get())
            {
                //If enabled, then disable
                if (((bool)adapter.Properties["NetEnabled"].Value)==true)
                {
                    adapter.InvokeMethod("Disable", null);
                }
            }
        }

    }
    class Program
    {
        public static int Main(string[] args)
        {
            NetworkAdapterEnabler.DisableWMINetworkAdapters("Wireless");

            Console.WriteLine("Press any key to continue");
            var key = Console.ReadKey();

            NetworkAdapterEnabler.EnableWMINetworkAdapters("Wireless");

            Console.WriteLine("Press any key to continue");
            key = Console.ReadKey();
            return 0;
        }
    }
}

More Related questions