发新话题
打印

[原创]C#编写的一个自动更换MAC及IP的小工具(开源代码)

[原创]C#编写的一个自动更换MAC及IP的小工具(开源代码)

文章作者:new.ease
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

原来我等新注册会员只能在此发表。没有什么技术含量但绝原创。
Code Language : C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using Microsoft.Win32;
  9. using System.Windows;
  10. using System.Management;
  11. using System.Net.NetworkInformation;
  12. using System.ServiceProcess;
  13. using System.Threading;
  14.  
  15. namespace test
  16. {
  17.   public partial class Form1 : Form
  18.   {
  19.     RegistryKey macRegistry ;
  20.     RegistryKey parRegistry;
  21.     RegistryKey ipRegistry;
  22.     RegistryKey proxyRegistry;
  23.     public Form1()
  24.     {
  25.       InitializeComponent();
  26.       macRegistry = Registry.LocalMachine.OpenSubKey(\"SYSTEM\").OpenSubKey(\"CurrentControlSet\").OpenSubKey(\"Control\").OpenSubKey(\"Class\").OpenSubKey(\"{4D36E972-E325-11CE-BFC1-08002bE10318}\").OpenSubKey(\"0010\",true);//mac的注册表建所在
  27.      parRegistry = Registry.LocalMachine.OpenSubKey(\"SYSTEM\").OpenSubKey(\"CurrentControlSet\").OpenSubKey(\"Services\").OpenSubKey(\"Tcpip\").OpenSubKey(\"Parameters\");//IP的注册表建所在
  28.      proxyRegistry =Registry.CurrentUser.OpenSubKey(\"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\",true);
  29.      ipRegistry = parRegistry.OpenSubKey(\"Interfaces\").OpenSubKey(macRegistry.GetValue(\"NetCfgInstanceId\").ToString(),true);
  30.    }
  31.  
  32.    private void Form1_Load(object sender, EventArgs e)
  33.    {
  34.      if (macRegistry.GetValue(\"NetworkAddress\") == null)
  35.        label1.Text = \"默认MAC地址\";
  36.      else
  37.        label1.Text = macRegistry.GetValue(\"NetworkAddress\").ToString();
  38.  
  39.    }
  40.  
  41.    private bool SetNetworkAdapter(bool status)
  42.    {
  43.      const string discVerb = \"停用(&B)\";
  44.      const string connVerb = \"启用(&A)\";
  45.      const string network = \"网络连接\";
  46.      const string networkConnection = \"本地连接\";
  47.      string sVerb;
  48.  
  49.      if (status)
  50.      {
  51.  
  52.        sVerb = connVerb;
  53.      }
  54.      else
  55.      {
  56.  
  57.        sVerb = discVerb;
  58.      }
  59.  
  60.      Shell32.Shell sh = new Shell32.Shell();
  61.      Shell32.Folder folder;
  62.  
  63.      folder = sh.NameSpace(3);    //Shell32.ShellSpecialFolderConstants.ssfCONTROLS  
  64.      try
  65.      {
  66.        //进入控制面板的所有选项  
  67.        foreach (Shell32.FolderItem myItem in folder.Items())
  68.        {
  69.          //进入网络和拔号连接  
  70.          if (myItem.Name == network)
  71.          {
  72.            Shell32.Folder fd = (Shell32.Folder)myItem.GetFolder;
  73.            foreach (Shell32.FolderItem fi in fd.Items())
  74.            {
  75.              //找到本地连接  
  76.              if (fi.Name.IndexOf(networkConnection) > -1)
  77.              {
  78.  
  79.                //找本地连接的所有右键功能菜单  
  80.                foreach (Shell32.FolderItemVerb Fib in fi.Verbs())
  81.                {
  82.                  if (Fib.Name == sVerb)
  83.                  {
  84.                    Fib.DoIt();
  85.                    return true;
  86.                  }
  87.                }
  88.              }
  89.            }
  90.          }
  91.        }
  92.      }
  93.      catch (Exception e)
  94.      {
  95.        MessageBox.Show(e.Message);
  96.        return false;
  97.      }
  98.      ;
  99.      return false;
  100.    }
  101.  
  102.    private void button1_Click(object sender, EventArgs e)
  103.    {
  104.      SetNetworkAdapter(false);
  105.      macRegistry.DeleteValue(\"NetworkAddress\",false);
  106.      ipRegistry.SetValue(\"IPAddress\", new string[] { \"192.168.1.0\"},RegistryValueKind.MultiString);
  107.      proxyRegistry.SetValue(\"ProxyServer\", \"192.168.1.00:808\");
  108.      timer1.Start();
  109.    }
  110.  
  111.    private void button2_Click(object sender, EventArgs e)
  112.    {
  113.      SetNetworkAdapter(false);
  114.      macRegistry.SetValue(\"NetworkAddress\", \"000000000000\");
  115.      ipRegistry.SetValue(\"IPAddress\", new string[] { \"192.168.1.00\" }, RegistryValueKind.MultiString);
  116.      proxyRegistry.SetValue(\"ProxyServer\", \"192.168.1.0:8080\");
  117.      timer1.Start();
  118.    }
  119.  
  120.    private void button3_Click(object sender, EventArgs e)
  121.    {
  122.      SetNetworkAdapter(false);
  123.      macRegistry.SetValue(\"NetworkAddress\", \"000000000000\", RegistryValueKind.String);
  124.      ipRegistry.SetValue(\"IPAddress\", new string[] { \"192.168.1.00\" }, RegistryValueKind.MultiString);
  125.      proxyRegistry.SetValue(\"ProxyServer\", \"192.168.1.0:8080\");
  126.      timer1.Start();
  127.    }
  128.  
  129.    private void timer1_Tick(object sender, EventArgs e)
  130.    {
  131.      if (SetNetworkAdapter(true))
  132.      {
  133.        timer1.Stop();
  134.      }
  135.    }
  136.  
  137.  }
  138. }
Parsed in 0.043 seconds

TOP

恩 很少在邪八看见C#同仁啊 呵呵楼主以后有空交流下!~ 不过现在工作不是写程序好多都记不住了 呵呵 C# 可是好东西
www.hack521.cn

TOP

要生效的话需要重启不?如果需要的话,建议楼主再加上重启网卡的代码,更方便一点哈~

[ 本帖最后由 zerosoul 于 2008-5-22 01:30 编辑 ]

TOP

更换IP?你这个IP是内网IP吧。

TOP

发新话题