`

C# 修改IP地址与操作access

    博客分类:
  • C#
阅读更多

C# 修改IP地址,操作access

 

 使用说明
1. 系统必须安装.NET Framework 2.0 或更高的版本 (文件:dotnetfx2.0.exe)。
2. 将压缩包解压即可使用本程序。
3. 必须在管理员权限运行。
4. 如果系统安装杀毒软件或安全卫士,会弹出修改IP的提示,请记住选择,并允许执行。
5. 修改IP地址,必须让网卡连接上网络才能修改。

 

使用方法:
运行软件后,先配置方案,步骤:
  1.点击软件界面右上角的 【方案配置】
  2.安装页面添加方案,添加成功后,点击返回。
  3.方案列表中就会出现刚才添加的新方案。
  4.选择一个方案,然后选择网卡(如果只有一个网卡联网,可不用选择)
  5.点击 【更改 IP 地址】 按钮
  6.等待更改成功。

 

 

 

核心源码: 

 Conn.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Management;
using System.Collections;
using Microsoft.Win32;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;

namespace IPSwitch
{
    public class Conn
    {
        /// <summary>
        /// 新增按钮的名称
        /// </summary>
        public const string _ADDED_NAME = "新增";
        /// <summary>
        /// 修改按钮的名称
        /// </summary>
        public const string _MODIFY_NAME = "编辑";
        /// <summary>
        /// 重置按钮的名称
        /// </summary>
        public const string _RESET_NAME = "重置";
        /// <summary>
        /// 删除按钮的名称
        /// </summary>
        public const string _DELETE_NAME = "删除";
        /// <summary>
        /// 保存按钮的名称
        /// </summary>
        public const string _SAVE_NAME = "保存";
        /// <summary>
        /// 标题文字
        /// </summary>
        public static string _TITLE = "";

        /// <summary>
        /// 获取title内容
        /// </summary>
        /// <returns></returns>
        public static string GetTitle()
        {
            _TITLE = DBReadAccess.GetObjectBySQL("select top 1 g_value from globals where g_name ='title'").ToString();
            return _TITLE;
        }

        /// <summary>
        /// 实例化 Win32_NetworkAdapterConfiguration类
        /// </summary>
        /// <returns></returns>
        private static ManagementObjectCollection GetMCInstances()
        {
            ManagementClass processClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
            return processClass.GetInstances();
        }

        /// <summary>
        /// 获取当前系统中所有网卡的名称
        /// </summary>
        /// <returns></returns>
        public static List<string> GetNICNameList()
        {
            List<string> list = new List<string>();
            ManagementObjectCollection moc = Conn.GetMCInstances();
            //获取当前系统的所有NIC
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"])
                {
                    //将当前已经启动的网卡名称加以标识
                    //list.Insert(0,mo.GetPropertyValue("Description").ToString());
                    list.Add(mo.GetPropertyValue("SettingID").ToString());
                    continue;
                }
                //list.Add("(不可用)"+mo.GetPropertyValue("Description").ToString());
            }
            return GetNICNameList(list);
        }

        /// <summary>
        /// 获取当前可以用网卡
        /// </summary>
        /// <returns></returns>
        public static int GetIPEnabledNum()
        {
            int i = 0;
            ManagementObjectCollection moc = Conn.GetMCInstances();
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"])
                {
                    i++;
                }
            }
            return i;
        }

        /// <summary>
        /// 设置 自动获取IP
        /// </summary>
        public static void SetIpAddressAuto()
        {
            return;
            //ManagementObjectCollection moc = Conn.GetMCInstances();
            //ManagementBaseObject inPar = null;
            //foreach (ManagementObject mo in moc)
            //{
            //    if (!(bool)mo["IPEnabled"])
            //    {
            //        //如果网卡未启动就直接跳过
            //        continue;
            //    }
            //    //设置注册表的内容
            //    string sid = mo.GetPropertyValue("SettingID").ToString();
            //    RegistryKey rk = EditReg(sid);
            //    if (rk != null)
            //    {
            //        rk.SetValue("IPAddress", "0.0.0.0");
            //        rk.SetValue("SubnetMask", "");
            //        rk.SetValue("DefaultGateway", "");
            //        rk.SetValue("NameServer", "");
            //        rk.SetValue("EnableDHCP", "dword:00000001");//自动
            //        //Convert.ToInt16(1);
            //    }
            //    //设置IP 自动获取
            //    mo.InvokeMethod("EnableDHCP", null, null);
            //    //设置DNS 自动获取
            //    inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
            //    inPar["DNSServerSearchOrder"] = null;
            //    mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
            //}
        }

        /// <summary>
        /// 修改IP地址
        /// </summary>
        /// <param name="nic"></param>
        /// <param name="ip"></param>
        /// <param name="mask"></param>
        /// <param name="way"></param>
        /// <param name="dns"></param>
        public static void SetIpAddress(string nic, string[] ip, string[] mask, string[] way, string[] dns)
        {
            nic = GetNICId(nic);
            ManagementObjectCollection moc = Conn.GetMCInstances();
            ManagementBaseObject inPar = null;
            foreach (ManagementObject mo in moc)
            {
                string nicid = mo.GetPropertyValue("SettingID").ToString();
                //当前网卡设置IP,其他网卡设置自动获取
                if (nicid.Equals(nic))
                {
                    //IP 地址设置
                    if (ip != null && mask != null && way != null)
                    {
                        //设置IP地址
                        inPar = mo.GetMethodParameters("EnableStatic");
                        inPar["IPAddress"] = ip;
                        inPar["SubnetMask"] = mask;
                        mo.InvokeMethod("EnableStatic", inPar, null);

                        //设置网关地址 
                        inPar = mo.GetMethodParameters("SetGateways");
                        inPar["DefaultIPGateway"] = way;
                        mo.InvokeMethod("SetGateways", inPar, null);
                        //设置DNS 
                        inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
                        inPar["DNSServerSearchOrder"] = dns;
                        mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
                        return;
                    }
                }
                ////设置IP 自动获取
                //mo.InvokeMethod("EnableDHCP", null, null);
                ////设置DNS 自动获取
                //inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
                //inPar["DNSServerSearchOrder"] = null;
                //mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
                //设置注册表的内容
                RegistryKey rk = EditReg(nicid);
                if (rk != null)
                {
                    //rk.DeleteSubKey("DisableDhcpOnConnect");
                    try
                    {
                        rk.DeleteValue("DisableDhcpOnConnect");
                    }
                    catch { } try
                    {
                        rk.SetValue("EnableDHCP", "1", RegistryValueKind.DWord);
                    }
                    catch { } try
                    {
                        rk.DeleteValue("NameServer");
                    }
                    catch { } try
                    {
                        rk.SetValue("IPAddress", "0.0.0.0");
                    }
                    catch { } try
                    {
                        rk.DeleteValue("SubnetMask");
                    }
                    catch { } try
                    {
                        rk.DeleteValue("DefaultGateway");
                    }
                    catch { }
                    //rk.Flush();
                    rk.Close();
                }
            }
        }

        /// <summary>
        /// 加载网卡ID
        /// </summary>
        /// <param name="names"></param>
        /// <returns></returns>
        public static string GetNICId(string nicname)
        {
            string name = null;
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in nics)
            {
                    if (adapter.Name.Equals(nicname))
                    {
                        name = adapter.Id;
                    }
            }
            return name;
        }

        /// <summary>
        /// 加载网卡名称
        /// </summary>
        /// <param name="names"></param>
        /// <returns></returns>
        public static List<string> GetNICNameList(List<string> names)
        {
            List<string> list = new List<string>();
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in nics)
            {
                if (names.Contains(adapter.Id))
                {
                    list.Insert(0, adapter.Name);
                }
                else
                {
                    list.Add("(不可用)" + adapter.Name);
                }
            }
            return list;
        }
        /// <summary>
        /// 获取对应的注册表项
        /// </summary>
        /// <param name="subkey"></param>
        /// <returns></returns>
        public static RegistryKey EditReg(string subkey)
        {
            try
            {
                RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces");
                return rk.OpenSubKey(subkey,true);
            }
            catch
            {
                return null;
            }
            //本地 {4D5423C7-F885-4787-A1FA-18CB41BDEFC5}
            //无线 {B74AB920-C254-4FF3-9B49-2F495DD8079B}

            //rk.GetValue("");
            //rk.SetValue("","");
        }
    }
}

  

 

 

DBReadAccess.cs:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Data;
using System.Configuration;

namespace IPSwitch
{
    /// <summary>
    /// 处理access的类
    /// </summary>
    public class DBReadAccess
    {
        /// <summary>
        /// Access 的数据库连接字符串.
        /// </summary>
        private static readonly string connString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
        //@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Database.mdb;Jet OLEDB:Database Password=switch";
        private static OleDbConnection conn = null;

        /// <summary>
        /// 单例 返回连接对象
        /// </summary>
        /// <returns></returns>
        private static OleDbConnection GetConn()
        {
            if (conn == null)
            {
                //connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
                conn = new OleDbConnection(connString);// 建立数据库连接.
            }
            return conn;
        }

        private static void isopen()
        {
            // 初始化实例
            DBReadAccess.GetConn();
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
        }
        /// <summary>
        /// 根据sql语句,获取datatable
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DataTable GetDataTableBySQL(string sql)
        {
            isopen();
            DataTable dt = new DataTable();
            OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);// 创建一个适配器
            adapter.Fill(dt);//绑定table
            adapter.Dispose();
            conn.Close();// 关闭数据库连接.
            return dt;
        }
        /// <summary>
        /// 根据sql语句查询第一行第一列的值
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static object GetObjectBySQL(string sql)
        {
            isopen();
            OleDbCommand cmd = conn.CreateCommand();// 创建一个 Command.
            cmd.CommandText = sql;// 定义需要执行的SQL语句.
            object obj = cmd.ExecuteScalar();//查询第一行第一列
            cmd.Dispose();
            conn.Close();// 关闭数据库连接.
            return obj;
        }
        /// <summary>
        /// 根据sql语句执行更新语句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static int GetExecuteBySQL(string sql)
        {
            isopen();
            OleDbCommand cmd = conn.CreateCommand();// 创建一个 Command.
            cmd.CommandText = sql;// 定义需要执行的SQL语句.
            int num = cmd.ExecuteNonQuery();
            cmd.Dispose();
            conn.Close();// 关闭数据库连接.
            return num;
        }
        
    }
}

 

 

更多的页面操作请下载附件查看源码。

 

 

 

 

 

 

2
0
分享到:
评论

相关推荐

    IP地址转成access数据库

    将txt中的ip地址直接转换成access数据库

    VS2008用C#编写的IP地址修改器

    自由修改IP地址,并可以保存不同方案,数据库采用Access,将IP.mdb放在我的文档下。不过目前对于本地和无线以及双网卡的情况,还不能辨认,只能一视同仁,对活动网卡全部修改。

    ip查询(asp c#)

    用asp c#实现的IP查询功能 ,支持url查询,支持ip地址查询.其中还包含一个ip范围的access数据库,这个我认为很有用,可以很方便的查找到ip地址的大概范围.其中为源代码.是aspx格式...

    C#通过局域网连接Access数据库

    VS2008版的C#通过局域网连接Access数据库,www.codefans.net截图所示...第一步配置数据源,先输入局域网电脑IP地址、登录名及密码,然后进入下一步,输入本机数据源用户名和密码,程序开始试图连接该机的Access数据库。

    c# 呼叫中心根据IP实时显示城市得到天气状况,日历功能

    目前还不算完整功能的呼叫中心,已有功能:根据IP实时显示城市得到天气状况,日历功能,备忘录,数据库用Access可以更新

    QQ的IP地址导出小工具

    QQ的IP地址导出小工具 此程序为“QQ IP数据库纯真版”程序导出的文本数据转换为Access数据库的小工具。 主要用于网站留言版和论坛中的用户IP查地址功能。还可以用于测试计算机的速度哦。

    明日科技C#开发入门及项目实战

    实例181 使用线程扫描局域网ip地址 实例182 使用线程休眠控制图片以百叶窗效果显示 实例183 使用线程控制向窗体中拖放图片并显示 实例184 使用线程制作动画效果的状态栏 实例185 使用线程遍历文件夹 实例186 使用...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例091 使用正则表达式验证IP地址 106 实例092 使用正则表达式验证URL 107 第4章 数组和集合的使用 109 4.1 数组的基本操作 110 实例093 获取多维数组的行数与列数 110 实例094 按指定条件在数组中检索元素 111 ...

    C#程序开发范例宝典(第2版).part02

    第7章 操作系统与Windows相关程序 324 7.1 启动相关 325 实例233 进入Windows系统前发出警告 325 实例234 实现注销、关闭和重启计算机 326 7.2 获得磁盘属性 328 实例235 获得硬盘序列号 328 实例236 获取...

    C#.net_经典编程例子400个

    273 实例190 获取窗口文本 273 实例191 判断文件是否正在被使用 274 实例192 在程序中调用.HLP文件 275 实例193 C#中实现文件拖放 276 实例194 文件比较 276 第7章 操作系统与Windows...

    C#程序开发范例宝典(第2版).part08

    第7章 操作系统与Windows相关程序 324 7.1 启动相关 325 实例233 进入Windows系统前发出警告 325 实例234 实现注销、关闭和重启计算机 326 7.2 获得磁盘属性 328 实例235 获得硬盘序列号 328 实例236 获取...

    C#程序开发范例宝典(第2版).part12

    第7章 操作系统与Windows相关程序 324 7.1 启动相关 325 实例233 进入Windows系统前发出警告 325 实例234 实现注销、关闭和重启计算机 326 7.2 获得磁盘属性 328 实例235 获得硬盘序列号 328 实例236 获取...

    Visual C# .NET精彩编程实例集锦

    实例133 如何获取主机名和IP地址 实例134 如何 实现连续的PING 实例135 如何扫描端口 第8章 Web应用 ---------------------------------- 实例136 如何在Web页中使用广告控件 实例137 如何在Web页中使用表格控件 ...

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 &lt;br&gt;1.1 Visual Studio开发环境安装与配置 2 &lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2 &lt;br&gt;0002 配置合适的Visual Studio 2005...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例181 使用线程扫描局域网ip地址 345 实例182 使用线程休眠控制图片以百叶窗效果显示 347 实例183 使用线程控制向窗体中拖放图片并显示 349 实例184 使用线程制作动画效果的状态栏 351 实例185 使用线程遍历文件夹...

    Visual C#.NET 2008程序设计案例集锦 (源码)

    案例9.3 动态修改本机IP地址 案例9.4 网络连接和传输信息 案例9.5 网络在线检测 案例9.6 网络在线浏览器 案例9.7 HTTP动态下载 案例9.8 动态查看网页标题信息 案例9.9 电子邮件的发送 本章小结 第10章 Web...

    C#源码大集合 03(共3卷)

    │ ├─实例130 如何发送电子邮件 │ │ ├─实例131 如何实现点对点的聊天 │ │ ├─实例132 如何在线收听网络电台节目 │ │ ├─实例133 如何获取主机名和IP地址 │ │ ├─实例134 如何实现连续的...

Global site tag (gtag.js) - Google Analytics