RameshPranav Ответов: 3

Как указать на папку "сетевые подключения" в C# с помощью shell32 windows 10


Привет,

Я использую следующий код, чтобы указать на сетевое соединение, стремясь включить и отключить "локальное соединение" с помощью кода по запросу. Но потом я понял , что это будет работать для XP, я не уверен, как это сделать для Windows 7 или Windows 10 из-за другой структуры папок по сравнению с XP. Пожалуйста, веди меня.

Shell32.ShellClass sc = new Shell32.ShellClass();
            Shell32.Folder RootFolder = sc.NameSpace(3); // ssfCONTROLS
            Shell32.Folder SrcFlder = null;

            foreach (Shell32.FolderItem2 fi in RootFolder.Items()) {
                if (fi.Name == "Network Connections") {
                    SrcFlder = (Shell32.Folder)fi.GetFolder;
                    return SrcFlder;
                }
            }
            return null;


Спасибо,
Рамеш Чандер.

Что я уже пробовал:

Я получаю элементы папки в Панели Управления Java, Nail и Flash Player. Ничего больше.

3 Ответов

Рейтинг:
2

RameshPranav

Привет, спасибо за вашу помощь.

Я исправил свою задачу следующим образом, хотя моя цель состоит в том, чтобы отключить и включить сетевой адаптер для тестирования сетевого оборудования во время производства. Я использовал класса win32_networkadapter вызывает wmic, чтобы полностью заполнить.

            System.Diagnostics.Process process = new System.Diagnostics.Process();
            System.Diagnostics.ProcessStartInfo startInfo = 
                     new System.Diagnostics.ProcessStartInfo();
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.FileName = "cmd.exe";

            
                try {
                    startInfo.Arguments = "/c wmic path win32_networkadapter where PhysicalAdapter=True call enable";
                    process.StartInfo = startInfo;
                    process.Start();
                }
                catch (Exception) {
                }

//   You may use the following if wanted specific index. 
//   "/c wmic path win32_networkadapter where index=0 call enable"; // depends on your 
//   adapater's index number.


Рейтинг:
16

RameshPranav

Привет Грэм ,

Спасибо за ваш ответ,

Я мог получить только включенные адаптеры в списке. Но моя потребность состоит в том , чтобы получить все, и тогда я мог бы включить его, что я и хотел сделать.

if (e.ProgressPercentage == NETWOEK_ENABLING) {
    m_networkCheckResult.Text = "Enabling Network Adapter";
    m_networkCheckResult.Foreground = Brushes.Yellow;
    NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
    foreach (NetworkInterface adapter in adapters) {
        if ((adapter.Name == "Local Area Connection") || (adapter.Name == "Ethernet")) {
            if (adapter.OperationalStatus != OperationalStatus.Up) {
                System.Diagnostics.ProcessStartInfo psi =
        new System.Diagnostics.ProcessStartInfo("netsh", "interface set interface \"" + adapter.Name + "\" enable");
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo = psi;
                p.Start();
            }
        }
    }
}

Спасибо
Рамеш Чандер.