最近忙著改論文,但迫于手機沒有流量,反復共享電腦wifi的操作已經讓我忍無可忍,而“獵豹wifi”“360wifi分享”等工具曾導致電腦多次睡死(可能是臺式機的USB網卡兼容性問題)。因此抽空寫了個便利工具,完全利用windows自帶功能實現,主要合并了“命令提示符”的若干指令:
- 設置windows自帶wifi熱點;
- 開啟、關閉wifi;
- 自動關機與取消;(主要是本人喜歡睡前趴床上再玩會手機,又懶得起身關電腦)
以及部分.NET對系統進行管理:
- 關閉閃訊進程(避免閃訊鎖定共享功能);
- 利用windows自帶的庫實現自動共享,避免手動設置。(很多人可能卡在這步上)
經測試,本工具不影響閃訊心跳驗證,上網穩定,不會像手動共享那樣在幾分鐘后就會斷網。
當然,如果不是浙江一帶的校園網用戶可能不需要閃訊這類進行撥號,直接開啟熱點進行分享即可。
Github源程序(項目文件): https://github.com/Blz-Galaxy/Tools-Wifi-Sharing
相關命令提示符(也可以用BAT腳本方式調用)
- 設置系統自帶的虛擬網卡Microsoft Virtual WiFi Miniport Adapter,從而創建熱點(只需在首次使用前配置):
netsh wlan set hostednetwork mode=allow ssid=Blz_Galaxy key=1234567890此處熱點標識為Blz_Galaxy,密碼為1234567890,請自行修改。
- 開啟分享的Wifi熱點:
netsh wlan start hostednetwork
- 關閉Wifi熱點:
netsh wlan stop hostednetwork
- 定時關機(3600秒后關機):
shutdown -s -t 3600
- 設定關機后也可以取消關機計劃:
shutdown -a
- C#調用控制臺指令方式:
System.Diagnostics.PRocess _pCmd;_pCmd = new System.Diagnostics.Process();_pCmd.StartInfo.FileName = "cmd.exe";_pCmd.StartInfo.UseShellExecute = false;_pCmd.StartInfo.RedirectStandardOutput = true;_pCmd.StartInfo.RedirectStandardInput = true;_pCmd.StartInfo.CreateNoWindow = true;_pCmd.Start();//執行目標指令_pCmd.StandardInput.WriteLine("shutdown -a");再一例:
Regex reg = new Regex(@"[/u4e00-/u9fa5]");//正則表達式if (reg.IsMatch(textBox1.Text) || reg.IsMatch(textBox2.Text)){ MessageBox.Show("不能含有漢字"); return;}if (textBox2.Text.Length < 8){ MessageBox.Show("密碼8位以上"); return;}_strWrite = String.Format("netsh wlan set hostednetwork mode=allow ssid={0} key={1}", this.textBox1.Text, this.textBox2.Text);_pCmd.StandardInput.WriteLine(_strWrite);
- 自動關閉指定進程(如閃訊的“singleNet”進程)
取代了人工在任務管理器中查找進程,解救密集恐懼癥患者~
Process[] processes = Process.GetProcessesByName(ProcessName);foreach (Process instance in processes){ try { if (instance.ProcessName == ProcessName) instance.Kill();; } catch { }具體可以參看: 【C#】指定進程關閉&閃訊下的Wifi共享
- 調用/Windows/system32/hnetcfg.dll,即能使用“NETCONLib”實現自動共享 (關鍵)
try{ string connectionToShare = this.textBox3.Text; // 被共享的網絡連接 string sharedForConnection = this.textBox4.Text; // 需要共享的網絡連接 NetSharingManager manager = new NetSharingManager(); var connections = manager.EnumEveryConnection; foreach (INetConnection c in connections) { var props = manager.NetConnectionProps[c]; var sharingCfg = manager.INetSharingConfigurationForINetConnection[c]; if (props.Name == connectionToShare) { sharingCfg.EnableSharing(tagSHARINGCONNECTIONTYPE.ICSSHARINGTYPE_PUBLIC); } else if (props.Name == sharedForConnection) { sharingCfg.EnableSharing(tagSHARINGCONNECTIONTYPE.ICSSHARINGTYPE_PRIVATE); } }}catch{ MessageBox.Show("請打開網絡和共享中心·查看是不是已經連接Internet!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);}取代手動進入“網絡共享中心->更改適配器設置->singleNetPPPoE屬性->共享->勾選允許分享internet->選擇分享目標”這一連串操作,懶人福音~
新聞熱點
疑難解答