前言:

   

    本人常年使用Windows 7(虽然在努力学习Ubuntu,但是必须承认Windows 7上拥有大量的优秀软件,比如Evernote、Microsoft Office等)。但是由于学校的网络是通过绑定MAC和IP地址,然后客户端登录的模式提供网络服务的,所以同一时间只能够允许一台设备上网(学校的客户端会检测路由器,一旦检测到就会断开连接)。 

    这时候Windows 7的虚拟WiFi就成了手机和平板电脑的救命稻草。虚拟WiFi需要一定的硬件支持,但是现在的笔记本一般都没问题,本文不再讨论了。虚拟WiFi开启的方式一般有两种:(1)使用类似Connectify的工具软件。(2)使用命令提示符进行设置。本文介绍笔者的一个用来设置虚拟WiFi的小程序,其关键就是对命令提示符的二次调用。

开启虚拟WiFi:

(一)工具软件

    本人用过的软件只有Connectify。不得不说这是一款很好的软件,界面友好、功能齐全。但是在本人的笔记本上工作却不是很正常,打开初始化的过程非常卡(Y470 Win7 x64)。所以后来我一般选择在命令提示符中手动开启。

(二)命令提示符

    首先介绍一下在命令提示符下开启虚拟WiFi:

    1、打开命令提示符cmd。(注意需要用管理员权限)

    2、开启虚拟WiFi:    netsh wlan set hostednetwork mode=allow ssid=NameString key=KeyString(mode=disallow可以禁用虚拟WiFi,ssid表示热点名称,key则为连接到热点的密码)

    3、设置连接源:打开控制面板,按照 控制面板 => 网络和 Internet => 网络连接的顺序打开,你会发现多了一个Microsoft Virtual WiFi Miniport Adapter。按照你的信号源(如果连有线的就选本地连接,连无线的就选无线网络连接),右键属性 => 共享 勾选第一个选项,然后在下拉列表中选择那个多出来的无线网络连接。

    4、开启虚拟WiFi:     netsh wlan start hostednetwork

    5、关闭虚拟WiFi:     netsh wlan stop hostednetwork

    可以发现,如果每次开启和关闭虚拟WiFi都要输入那么长一串命令的确很麻烦,一个简便的处理方式是将命令作为批处理方式。将这两个命令分别写入到txt文件中,然后将后缀名改为bat,批处理文件就做好了。

自己动手,丰衣足食:

    事实上,用两个批处理文件的确可以了,但是把两个bat文件放在桌面上不嫌丑吗?再说被人蹭网也是常事,如果要改密码那么就必须重新修改命令,还是有点麻烦。于是本着计算机专业学生的二愣子精神,我打算自己动手做一个小程序来完成虚拟WiFi的开启、关闭、修改、禁用等功能。

    其实吧,作为一个半桶水本人也不会修改操作系统的一些参数。于是我就打算在cmd外面加一层壳,用WindowsForm做一个cmd的二次调用。首先是生成界面:

 

                                                                           

 

    窗体上的两个输入框用来在更改和设置虚拟WiFi的SSID和连接密码。显示信息可以显示出连接的连接设备数目等信息。开启和关闭分别对应start和stop命令,禁用会删除虚拟的无线连接。最后说说这个输出面板,这是用来显示cmd中的输入信息,但是不能从这里输入。

程序代码 :

    最重要也是实现的关键——对CMD的调用:

  1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: using System.Text;
  5: using System.Diagnostics;
  6: using System.IO;
  7: 
  8: namespace VirtualWiFi
  9: {
 10:     class Command
 11:     {
 12:         public static string RunCMD(List<string> commands)
 13:         {
 14:             System.Diagnostics.Process p = new System.Diagnostics.Process();
 15:             //设定程序名;
 16:             p.StartInfo.FileName = "cmd.exe";
 17:             //关闭shell的使用;
 18:             p.StartInfo.UseShellExecute = false;
 19:             //cmd窗口不显示;
 20:             p.StartInfo.CreateNoWindow = true;
 21:             //重定向标准输入、输出、错误输出;
 22:             p.StartInfo.RedirectStandardError = true;
 23:             p.StartInfo.RedirectStandardInput = true;
 24:             p.StartInfo.RedirectStandardOutput = true;
 25: 
 26:             p.Start();
 27:             foreach (string command in commands)
 28:             {
 29:                 p.StandardInput.WriteLine(command);
 30:             }
 31:             p.StandardInput.WriteLine("exit");
 32: 
 33:             //读取返回信息;
 34:             return p.StandardOutput.ReadToEnd();
 35:         }
 36:     }
 37: }

    然后是窗体的事件处理程序:

  1: using System;
  2: using System.Collections.Generic;
  3: using System.Windows.Forms;
  4: 
  5: namespace VirtualWiFi
  6: {
  7:     public partial class Form1 : Form
  8:     {
  9:         private readonly string allow;
 10:         private readonly string disallow;
 11:         private readonly string show;
 12:         private readonly string start;
 13:         private readonly string stop;
 14: 
 15:         public Form1()
 16:         {
 17:             InitializeComponent();
 18:             show = @"netsh wlan show hostednetwork";
 19:             start = @"netsh wlan start hostednetwork";
 20:             stop = @"netsh wlan stop hostednetwork";
 21:             allow = @"netsh wlan set hostednetwork mode=allow";
 22:             disallow = @"netsh wlan set hostednetwork mode=disallow";
 23:         }
 24: 
 25:         private void buttonOK_Click(object sender, EventArgs e)
 26:         {
 27:             if (textBox1.Text == null || textBox1.Text.Length == 0 ||
 28:                 textBox2.Text == null || textBox2.Text.Length == 0)
 29:             {
 30:                 MessageBox.Show("SSID以及密码不可为空!");
 31:                 return;
 32:             }
 33:             string setting = allow + " ssid=" + textBox1.Text + " key=" + textBox2.Text;
 34:             var commands = new List<string>();
 35:             commands.Add(setting);
 36:             commands.Add(show);
 37:             Command.RunCMD(commands);
 38:         }
 39: 
 40:         private void radioButtonStart_CheckedChanged(object sender, EventArgs e)
 41:         {
 42:             var commands = new List<string>();
 43:             commands.Add(start);
 44:             textBox3.Text = Command.RunCMD(commands);
 45:         }
 46: 
 47:         private void radioButtonStop_CheckedChanged(object sender, EventArgs e)
 48:         {
 49:             var commands = new List<string>();
 50:             commands.Add(stop);
 51:             textBox3.Text = Command.RunCMD(commands);
 52:         }
 53: 
 54:         private void buttonDisplay_Click(object sender, EventArgs e)
 55:         {
 56:             var commands = new List<string>();
 57:             commands.Add(show);
 58:             textBox3.Text = Command.RunCMD(commands);
 59:         }
 60: 
 61:         private void buttonForbidden_Click(object sender, EventArgs e)
 62:         {
 63:             var commands = new List<string>();
 64:             commands.Add(disallow);
 65:             textBox3.Text = Command.RunCMD(commands);
 66:         }
 67:     }
 68: }

一个用C#实现的虚拟WiFi设置程序的更多相关文章

  1. 【计算机-虚拟wifi】Win7虚拟wifi设置

    虚拟Wifi,可以让电脑变成无线路由器,实现共享上网.   设置步骤 1.以管理员身份运行:cmd.exe   2.启动并设置虚拟网卡:   命令窗口中输入:  netsh wlan set host ...

  2. 设置虚拟wifi,手机和电脑可以连接

    在家里没有wifi,笔记本电脑又是宽带连接,有时候手机流量用得很快,于是网上找了一下设置虚拟wifi 方法. 1.首先你的电脑上要有无线网卡,并且无线网上一定要是开户的,一般默认的都开启,如果没有开启 ...

  3. win7设置虚拟wifi

    1. cmd,使用管理员权限打开: 2. 设置:netsh wlan set hostednetwork mode=allow ssid=ABCD key=12345678 mode:是否开启虚拟wi ...

  4. WIN10 CMD 启动虚拟WIFI

    1.以管理员身份运行命令提示符: 快捷键win+R→输入cmd→回车 2.启用并设定虚拟WiFi网卡: 运行命令:netsh wlan set hostednetwork mode=allow ssi ...

  5. 完美实现开机启动虚拟WIFI,顺便实现目前的WP8系统使用VPN(7.1修)

    众所周知,windows7系统的机器若带有无线网卡(台式机可以买一个USB无线网卡,京东目前39元,TP-Link的),可以虚拟出wifi,供手机等移动设备使用. 虚拟的WIFI的命了和软件在网上都找 ...

  6. windows7开启虚拟wifi和虚拟无线AP的方法

         你可以开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网. 1.点开始  所有程序   命令提示符右键管理员身份运行命令 ...

  7. Win7笔记本电脑启用虚拟WIFI共享上网

    今天看了一个帖子,win7系统通过笔记本的无线网卡,启用虚拟Wifi功能共享上网,自己尝试了一下,感觉很好用,至少没有无线路由的自己,手机可以上wifi了,更新软件玩微信等等,都方便多了,好了,废话不 ...

  8. Win7下Netsh虚拟Wi-Fi

    Netsh的字面意思是网络外壳,其实它是一个命令行实用程序,最初出现于Windows 2000操作系统,它可以帮助管理WINDOWS中的网络设置.此后,微软不断对它进行改进,给它增加了一些新的命令集. ...

  9. 使用无线网卡搭建虚拟wifi

    1.首先以管理员身份运行命令提示符 开始->搜索框输入cmd,出来的cmd.exe上右键管理员身份运行,或者win+R打开运行提示框,输入cmd并回车. 2.设置“虚拟Wifi网卡”模式 敲入命 ...

随机推荐

  1. Java HTTP请求

    注意:java  http请求要放在 try catch里面,该过程是一个阻塞过程,所以需要新建一个线程进行处理 try { HttpPost request = new HttpPost(URL); ...

  2. 输入一个正数 n,输出所有和为 n 连续正数序列。 java实现

    用了半小时才写出来啊, 其实这种思路应用范围很广,利用有序性这个特点,比如本体只要是有序就行,例如两个集合是有序的,求交集,有序数组的查找,有序数组的归并,有序有了优化的可能. 输入一个正数 n,输出 ...

  3. oracle rac存储安装

    oracle rac 10.2 的在 linux 上的存储选项 博客分类: Oracle OracleLinux项目管理配置管理  Oracle 集群需要存储的软件和数据 项目 内容 最少磁盘空间 C ...

  4. 【Java基础】Java中的多态

    什么是多态 多态是一个对象的多种实现,是建立在继承的基础上的,即对象“人”,有老师和学生不同的实现,其实总结起来就是允许将子类类型的指针赋值给父类类型的指针. 多态的发生条件 多态发生的前提是:1. ...

  5. (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法

    FPGA管脚分配文件保存方法 使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment ...

  6. 用Quartus II 建立一个工程模板,以后新建工程时无需再配置参数

    以前用Quartus II 每次新建工程时,都要设置工程名,选择工程路径,选择芯片型号等等,好麻烦呀!可不可以建一个工程模板,以后新建工程时直接改相应文件名就可以呀!后来我一琢磨,感觉也不是不可以.因 ...

  7. Linux为Tomecat指定JDK

    在搭建Jenkin+Sonar集成时,由于系统环境配置了jdk1.7,但是jenkins在安装sonar的插件时,需要jdk1.8.,所以需要在Tomcat指定jdk1.8. (1)暂停Tomcat ...

  8. Map集合中value()方法与keySet()、entrySet()区别

    http://blog.csdn.net/liu826710/article/details/9001254 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, ...

  9. JavaScript的递归之更多例子

    更多例子 第二个递归的例子是求两个自然数的最大公约数(有没有回到令人怀念的中学时代).下面的程序用的是经典的辗转相除法. //greatest common divisor //假定a.b都是正整数 ...

  10. PetShop 4.0学习笔记:消息队列MSMQ

    直到今天才知道,在我们每天都在用的Window系统里还有这么好用的一个编程组件:消息队列.它能够解决在大数据量交换的情况下的性能问题,特别是BS系统的数据库性能.而且它的异步处理方式能给程序员最大的便 ...