///// <summary> ///// Enabled AutoConfig와 Disabled AutoConfig를 검색한 뒤 해당되는 네트워크 인터페이스 이름을 반환합니다. ///// </summary> //private void GetAutoConfigInterfaces(out List<string> enabled, out List<string> disabled) //{ // string cmdResult = Cmd.Run("netsh wlan show autoconfig"); // string[] lineStr = cmdResult.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); // enabled = new List<string>(); // disabled = new List<string>(); // for (int i = 2; i < lineStr.Length; ++i) // { // string[] blockStr = lineStr[i].Split(new char[] { '\"' },StringSplitOptions.RemoveEmptyEntries); // if (blockStr.Length != 2) // continue; // string description = blockStr[0]; // string name = blockStr[1]; // if (description.Contains("enabled") == true) // { // // 인터페이스 이름을 저장. // enabled.Add(name); // } // else if(description.Contains("disabled") == true) // { // // 인터페이스 이름을 저장. // disabled.Add(name); // } // } //} ///// <summary> ///// 무선 네트워크의 인터페이스를 검사합니다. ///// </summary> //private List<Dictionary<string,string>> GetNetworkInfo(List<string> enabledAutoConfigList, List<string> disabledAutoConfigList) //{ // string cmdResult = Cmd.Run("netsh wlan show interface"); // // 줄바꿈을 기준으로 스플릿. // string[] splitStr = cmdResult.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); // List<Dictionary<string, string>> result = new List<Dictionary<string, string>>(); // for (int i = 0; i < splitStr.Length; ++i) // { // string[] str = splitStr[i].Split(new string[] { " : " }, StringSplitOptions.None); // if (str.Length != 2) // continue; // // 전, 후 공백 삭제. // string key = str[0].Trim(); // string value = str[1].Trim(); // // Name key를 발견했다면 새로운 Dicationary 추가. // if (key == "Name") // { // result.Add(new Dictionary<string, string>()); // result.Last().Add(key, value); // // Autoconfig 상태 추가. // if (enabledAutoConfigList.Contains(value)) // result.Last().Add("Autoconfig", "Enabled"); // else if (disabledAutoConfigList.Contains(value)) // result.Last().Add("Autoconfig", "Disabled"); // else // result.Last().Add("Autoconfig", "Unknown!!"); // } // else // result.Last().Add(key, value); // } // return result; //} #endregion /// <summary> /// Autoconfig를 스캔합니다. /// </summary> private void AutoconfigInterfaceScan() { enabledAutoConfigList.Clear(); disabledAutoConfigList.Clear(); string cmdResult = Cmd.Run("netsh wlan show autoconfig"); string[] lineStr = cmdResult.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 2; i < lineStr.Length; ++i) { string[] blockStr = lineStr[i].Split(new char[] { '\"' }, StringSplitOptions.RemoveEmptyEntries); if (blockStr.Length != 2) { continue; } string description = blockStr[0]; string name = blockStr[1]; if (description.Contains("enabled") == true) { // 인터페이스 이름을 저장. enabledAutoConfigList.Add(name); } else if (description.Contains("disabled") == true) { // 인터페이스 이름을 저장. disabledAutoConfigList.Add(name); } } }
private void SetAutoconfig(string wlanName, bool autoconfig) { string cmdResult; if (autoconfig == true) { cmdResult = Cmd.Run("netsh wlan set autoconfig enabled=yes interface=\"" + wlanName + "\""); } else { cmdResult = Cmd.Run("netsh wlan set autoconfig enabled=no interface=\"" + wlanName + "\""); } }
/// <summary> /// AutoConfig를 설정합니다. /// </summary> private void SetAutoconfig(string wlanName, bool autoconfig) { if (autoconfig == true) { Cmd.Run("netsh wlan set autoconfig enabled=yes interface=\"" + wlanName + "\""); } else { Cmd.Run("netsh wlan set autoconfig enabled=no interface=\"" + wlanName + "\""); } networkControl.Scan(); WlanInfoUpdate(); }
/// <summary> /// 무선네트워크의 정보(networkInfos)를 스캔합니다. /// </summary> private void NetworkInfoScan() { string cmdResult = Cmd.Run("netsh wlan show interface"); // 줄바꿈을 기준으로 스플릿. string[] splitStr = cmdResult.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); networkInfos.Clear(); for (int i = 0; i < splitStr.Length; ++i) { string[] str = splitStr[i].Split(new string[] { " : " }, StringSplitOptions.None); if (str.Length != 2) { continue; } // 전, 후 공백 삭제. string key = str[0].Trim(); string value = str[1].Trim(); // Name key를 발견했다면 새로운 Dicationary 추가. if (key == "Name") { networkInfos.Add(new Dictionary <string, string>()); networkInfos.Last().Add(key, value); // Autoconfig 상태 추가. if (enabledAutoConfigList.Contains(value)) { networkInfos.Last().Add("Autoconfig", "Enabled"); } else if (disabledAutoConfigList.Contains(value)) { networkInfos.Last().Add("Autoconfig", "Disabled"); } else { networkInfos.Last().Add("Autoconfig", "Unknown!!"); } } else { networkInfos.Last().Add(key, value); } } }
/// <summary> /// Wifi 정보를 스캔합니다. /// 실제 스캔하는게 아닌 캐시된 정보를 가져옵니다. 만약 실제 스캔중이라면 Sleep 후, 스캔이 완료될 시 정보를 가져옵니다. 따라서 Thread를 권장합니다. /// </summary> public void Scan() { lock (lockObj) { wifiInfos.Clear(); string cmdResult = Cmd.Run("netsh wlan show networks mode=bssid"); int loofCount = 0; // 만약 스캔중이라면 while (cmdResult.Contains("BSSID") == false) { // 10초를 초과했다면 if (loofCount > 10) { MessageBox.Show("Wifi Scan TimeOut. \r\n\r\n", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Thread.Sleep(1000); cmdResult = Cmd.Run("netsh wlan show networks mode=bssid"); ++loofCount; } string[] lineStr = cmdResult.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < lineStr.Length; ++i) { string[] splitStr = lineStr[i].Split(new string[] { " : " }, StringSplitOptions.None); if (splitStr.Length != 2) { continue; } // 전후 공백 삭제. string key = splitStr[0].Trim(); string value = splitStr[1].Trim(); // 만약 키가 interface name이면 새로운 딕셔너리 생성. if (key == "Interface name") { wifiInfos.Add(value, new List <Dictionary <string, string> >()); continue; } // 만약 키에 SSID가 존재하면 interface 정보안에 새로운 리스트를 생성. if (key.Substring(0, 4) == "SSID") { wifiInfos.Last().Value.Add(new Dictionary <string, string>()); key = "SSID"; } // 만약 BSSID가 두 개 이상이라면. if (key.Length > 6 && key.Substring(0, 5) == "BSSID" && key.Substring(6, 1) != "1") { Dictionary <string, string> LastDict = wifiInfos.Last().Value.Last(); Dictionary <string, string> NewDict = new Dictionary <string, string>(); NewDict.Add("SSID", LastDict["SSID"]); NewDict.Add("Authentication", LastDict["Authentication"]); NewDict.Add("Encryption", LastDict["Encryption"]); wifiInfos.Last().Value.Add(NewDict); continue; } // 키와 값을 넣는다. wifiInfos.Last().Value.Last().Add(key, value); } } }