Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Разрыв работающего соединения


Автор: EuGenius_Krivbass 6.1.2008, 00:51
Ситуация такова. Есть локальное подключение (сетка) и выход в инет(ADSL) - два разных подключения с разными айпишниками и т.д.
Как разорвать коннект с инетом?
Благодарю.

Автор: mr.DUDA 6.1.2008, 03:36
EuGenius_Krivbass, если средствами C# то без изврата никак. Тема про подключение/отключение сетевого соединения программным способом поднималась несколько раз, попробуйте поискать по разделу. Вкратце, через WMI это сделать нельзя, можно через P/Invoke обращение к WinAPI (если не путаю).

Автор: EuGenius_Krivbass 6.1.2008, 11:57
Ничего на форуме не вижу подобного... ):

Автор: mr.DUDA 6.1.2008, 17:08
Хмм... Тогда вот пример. Я создал простое консольное приложение, добавил reference на COM-компоненту "Microsoft Shell Controls and Automation", написал следующий код:
Код
using System;
using Shell32;

class Program
{
    static void Main()
    {
        ShellClass shell = new ShellClass();
        Folder folder = shell.NameSpace(3); // панель управления
        foreach (FolderItem controlPanelItem in folder.Items())
        {
            string name = controlPanelItem.Name.ToLower();
            if (name == "сетевые подключения")
            {
                Folder networkConnections = (Folder)controlPanelItem.GetFolder;
                foreach (FolderItem2 networkConn in networkConnections.Items())
                {
                    name = networkConn.Name.ToLower();
                    if (name == "подключение по локальной сети")
                    {
                        // первым всегда идёт "отключить"
                        FolderItemVerb verbDisable = networkConn.Verbs().Item(0);

                        // вырубаем его
                        verbDisable.DoIt();
                    }
                }
            }
        }
    }
}


Для англоязычной винды нужно вместо "сетевые подключения" сравнить с "network connections" (можно делать обе проверки, для русской и английской виндовс). Имя подключения также ставим по выбору.

Автор: EuGenius_Krivbass 6.1.2008, 18:17
Спасибо

Автор: mr.DUDA 6.1.2008, 18:42
Рад помочь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)