Ejemplo n.º 1
0
        private void ApplyWincos()
        {
            ProgressBarPerform = new KeyValuePair<bool, int>(true, 100);

            if ((object)Dispatcher.Invoke(new Func<object>(() => { return comboBoxAdapters.SelectedValue; })) != null)
            {
                NetworkManagement NM = new NetworkManagement();
                try
                {
                    bool ipmark = false;
                    bool gatemark = false;
                    bool netbiosmark = true;

                    //Проверим Netbios, если не равен DISABLED, то выключим
                    if (NM.GetTcpipNetbiosState((string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull))) != 2)
                        netbiosmark = NM.SetTcpipNetbios(2, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)));

                    ipmark = NM.SetIP(Vips.wincIP, Vips.wincMask, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)));
                    //   Thread.Sleep(3000);
                    if (!ipmark)
                    {
                        _log.Error(String.Format("Не удалось изменить параметры сети IP={0}, mask={1}, adaperName={2}, adapterGuid={3}", Vips.wincIP, Vips.wincMask, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)), (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID))));
                        VentsTools.currentSettingString = "Не удалось поменять IP адрес";

                    }
                    gatemark = NM.SetGateway(Vips.wincGate, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)));
                    //  Thread.Sleep(3000);
                    if (!gatemark)
                    {
                        _log.Error(String.Format("Не удалось изменить параметры сети Gateway={0}, adaperName={1}, adapterGuid={2}", Vips.wincGate, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)), (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID))));
                        VentsTools.currentSettingString = "Не удалось поменять шлюз";
                    }


                    if (!ipmark && !gatemark)
                        VentsTools.currentSettingString = "Не удалось изменить настройки сети";
                    else
                    {
                        bool compl = false;
                        string message = "Текущий IP адрес - ";
                        message += NM.GetIP(ref compl, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                        message += "\r\nТекущая сеть: Wincos";
                        if (netbiosmark == false)
                            message += "\r\nНе удалось поменять настройки Netbios";
                        VentsTools.currentSettingString = message;
                        Dispatcher.Invoke(new Action(() => wincRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC"))));
                        Dispatcher.Invoke(new Action(() => wincRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC"))));
                        Dispatcher.Invoke(new Action(() => belsRect.Stroke = new SolidColorBrush(Colors.Transparent)));
                        Dispatcher.Invoke(new Action(() => belsRect.Fill = new SolidColorBrush(Colors.Transparent)));
                        //Запишем настройки в реестр
                        //начнем а гуида сетевой
                        RegistryWorker.WriteKeyValue(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, Microsoft.Win32.RegistryValueKind.String, VentsConst._LASTADPTGUID, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID)));
                        //запишем настройки в стринг массиве для этого гуида
                        string[] settArr = new string[] { Vips.belsIP, Vips.belsMask, Vips.belsGate, Vips.wincIP, Vips.wincMask, Vips.wincGate };
                        RegistryWorker.WriteKeyValue(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._ADAPTERSLOCATION, Microsoft.Win32.RegistryValueKind.MultiString, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID)), settArr);
                        //запишем последнюю нажатую кнопку (выбранную сеть)
                        RegistryWorker.WriteKeyValue(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, Microsoft.Win32.RegistryValueKind.String, VentsConst._LASTAPPLYBUTTONCLICKED, "WINCOS");
                    }

                }
                catch
                {
                    _log.Error(String.Format("Недопустимое значение маски и IP адреса IP={0}, mask={1}, adaperName={2}, adapterGuid={3}", Vips.wincIP, Vips.wincMask, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)), (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull))));
                    VentsTools.currentSettingString = "Недопустимое значение маски и IP адреса!";
                    ProgressBarPerform = new KeyValuePair<bool, int>(false, 100);
                    Dispatcher.Invoke(new Action(() => { applyBelsbutt.IsEnabled = true; applyWincbutt.IsEnabled = true; }));
                }
            }
            else
            {
                _log.Info("Нажата кнопка \"Применить настройки Белсолод\" без выбранного сетевого адаптера");
                VentsTools.currentSettingString = "Сначала Выберите сетевой адаптер!";
            }
            ProgressBarPerform = new KeyValuePair<bool, int>(false, 100);
            Dispatcher.Invoke(new Action(() => { applyBelsbutt.IsEnabled = true; applyWincbutt.IsEnabled = true; }));
        }
Ejemplo n.º 2
0
        private void Config()
        {
            ProgressBarPerform = new KeyValuePair<bool, int>(true, 100);

            //прочитаем из реестра guid последнего использованого адаптера, если такового нет оставим пустое и будем ждать пока пользователь выберет на комбобоксе нужный
            string adaptGUID = String.Empty;
            try
            {
                adaptGUID = (string)RegistryWorker.GetKeyValue<string>(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, VentsConst._LASTADPTGUID);
            }
            catch (System.IO.IOException) { }
            catch (Exception ex)
            {
                _log.Error(ex.Message + " (чтение из реестра)");
                VentsTools.currentSettingString = "Ошибка чтения реестра";
            }
            if (adaptGUID == String.Empty)
            {
                VentsTools.currentSettingString = "Выберите сетевой адаптер";
                Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged += new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended)));
                _cfgthread.Suspend();
                Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged -= new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended)));
            }
            else
            {
                int index = 0;
                foreach (NetworkAdapters adp in comboBoxAdapters.ItemsSource)
                {
                    if (adaptGUID == adp.GUID)
                    {
                        Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectedIndex = index));
                        break;
                    }
                    index++;
                }
                if ((bool)Dispatcher.Invoke(new Func<bool>(() => comboBoxAdapters.SelectedIndex == -1)))
                {
                    _log.Info(String.Format("Сетевой адаптер GUID={0} недоступен", adaptGUID));
                    VentsTools.currentSettingString = "Последний использованный адаптер недоступен, выберите другой";
                    VentsTools.currentSettingString = "Выберите сетевой адаптер";
                    Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged += new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended)));
                    _cfgthread.Suspend();
                    Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged -= new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended)));
                }
            }
            Vips = GetIPSettings((string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID)));
            bool state1 = false;
            bool state2 = false;
            bool state3 = false;
            NetworkManagement NM = new NetworkManagement();
            //Получим текущие настройки на машине, для wincos network запишем дефолтные
            try
            {
                if (Vips.belsIP == null)
                    Vips.belsIP = NM.GetIP(ref state1, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                if (Vips.belsMask == null)
                    Vips.belsMask = NM.GetSubnetMask(ref state2, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                if (Vips.belsGate == null)
                    Vips.belsGate = NM.GetGateway(ref state3, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                if (Vips.wincIP == null)
                    Vips.wincIP = VentsConst._DEFAULTWINCOSIP;
                if (Vips.wincMask == null)
                    Vips.wincMask = VentsConst._DEFAULTWINCOSMASK;
                if (Vips.wincGate == null)
                    Vips.wincGate = VentsConst._DEFAULTWINCOSGATEWAY;

            }
            catch (Exception ex)
            { _log.Error(ex); }

            Dispatcher.Invoke(new Action(() =>
            {
                belsIPadr.IsEnabled = true;
                belsMask.IsEnabled = true;
                belsGate.IsEnabled = true;
                wincIPadr.IsEnabled = true;
                wincMask.IsEnabled = true;
                wincGate.IsEnabled = true;
                applyBelsbutt.IsEnabled = true;
                applyWincbutt.IsEnabled = true;
            }));

            //загрузим последнюю нажатую кнопку
            string applyButtonClicked = String.Empty;
            try
            {
                applyButtonClicked = RegistryWorker.GetKeyValue<string>(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, VentsConst._LASTAPPLYBUTTONCLICKED);
            }
            catch (System.IO.IOException) { }
            catch (Exception ex)
            {
                _log.Error(ex.Message + " (чтение из реестра)");
                VentsTools.currentSettingString = "Ошибка чтения реестра";
            }
            if (applyButtonClicked == "BELSOLOD")
                Dispatcher.Invoke(new Action(() =>
                {
                    belsRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC"));
                    belsRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC"));
                }));
            else if (applyButtonClicked == "WINCOS")
                Dispatcher.Invoke(new Action(() =>
                {
                    wincRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC"));
                    wincRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC"));
                }));
            else
            {
                VentsTools.currentSettingString = "Выберите сеть для работы";
                ProgressBarPerform = new KeyValuePair<bool, int>(false, 100);
                return;
            }
            VentsTools.currentSettingString = String.Format("Последние использованые настройки: {0}", applyButtonClicked == "BELSOLOD" ? "Сеть Белсолод" : "Сеть Wincos");
            ProgressBarPerform = new KeyValuePair<bool, int>(false, 100);
        }
Ejemplo n.º 3
0
        private void comboBoxAdapters_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_cfgthread.ThreadState == ThreadState.Running || _cfgthread.ThreadState == ThreadState.Suspended)
                return;
            else
            {
                bool state = false;
                NetworkManagement NM = new NetworkManagement();
                Vips = GetIPSettings((comboBoxAdapters.SelectedItem as NetworkAdapters).GUID);
                if (Vips.belsIP == null)
                    Vips.belsIP = NM.GetIP(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                if (Vips.belsMask == null)
                    Vips.belsMask = NM.GetSubnetMask(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                if (Vips.belsGate == null)
                    Vips.belsGate = NM.GetGateway(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0];
                if (Vips.wincIP == null)
                    Vips.wincIP = VentsConst._DEFAULTWINCOSIP;
                if (Vips.wincMask == null)
                    Vips.wincMask = VentsConst._DEFAULTWINCOSMASK;
                if (Vips.wincGate == null)
                    Vips.wincGate = VentsConst._DEFAULTWINCOSGATEWAY;
            }

        }