Как включить совместное использование интернет-соединения с помощью скрипта?

Вопрос или проблема

У меня есть два порта NIC [port1 и port2], и я хочу включить совместное использование интернет-соединения на port1 с помощью C# или пакетного скрипта:

  • Я смог найти только способ запустить службу ICS, а не включить опцию:
    Скриншот1

В более ранних версиях ОС можно было использовать netsh routing, но это больше не работает в Win7.

  • Посмотрите на этот фрагмент Powershell, в противном случае на StackOverflow, вероятно, есть пример на C#:
    # Зарегистрировать библиотеку HNetCfg (один раз)
      RegSvr32 "hnetcfg.dll"
    
    # Создать объект NetSharingManager
      $m = New-Object -ComObject HNetCfg.HNetShare
    
    # Перечислить соединения
      $m.EnumEveryConnection |% { $m.NetConnectionProps.Invoke($_) }
    
    # Найти соединение
      $c = $m.EnumEveryConnection |? { $m.NetConnectionProps.Invoke($_).Name -eq "Ethernet" }
    
    # Получить конфигурацию совместного использования
      $config = $m.INetSharingConfigurationForINetConnection.Invoke($c)
    
    # Посмотреть, включено ли совместное использование
      Write-Output $config.SharingEnabled
    
    # Увидеть роль соединения в совместном использовании, имеет смысл только если SharingEnabled равно True
      # 0: Публичное || 1: Частное
      Write-Output $config.SharingType
    
    # Включить совместное использование
      # 0: Публичное || 1: Частное
      $config.EnableSharing(0)
    
    # Отключить совместное использование
      $config.DisableSharing()
    
  • Как включить совместное использование интернет-соединения с помощью командной строки?

.

Ответ или решение

Включение общего доступа к интернету с использованием сценария

В современных операционных системах Windows, таких как Windows 7 и выше, функция общего доступа к интернету (Internet Connection Sharing, ICS) может быть несколько сложной для настройки через традиционные методы. Однако с помощью Powershell или языка программирования C# можно создать автоматизированный сценарий для включения этой функции. В данном руководстве мы рассмотрим, как настроить общий доступ к интернету, используя Powershell, но также упомянем возможность использования C#.

Шаг 1: Запуск Powershell с правами администратора

Для начала откройте Powershell с правами администратора. Это необходимо для выполнения команд, требующих административных привилегий.

  1. Нажмите Win + X для открытия меню.
  2. Выберите «Windows Powershell (Администратор)».

Шаг 2: Запись сценария для включения ICS

Следующий Powershell-сценарий позволяет включить общий доступ к интернету для определенного сетевого подключения. Обязательно замените "Ethernet" на имя подключения, которое вы хотите использовать (например, port1).

# Регистрация библиотеки HNetCfg (выполняется один раз)
RegSvr32 "hnetcfg.dll"

# Создание объекта NetSharingManager
$m = New-Object -ComObject HNetCfg.HNetShare

# Получение всех подключений
$conns = $m.EnumEveryConnection

# Поиск нужного подключения
$c = $conns | ? { $m.NetConnectionProps.Invoke($_).Name -eq "port1" }

# Получение конфигурации общего доступа
$config = $m.INetSharingConfigurationForINetConnection.Invoke($c)

# Включение общего доступа
$config.EnableSharing(1) # Означает, что мы включаем общий доступ для физического адаптера

Write-Output "Общий доступ к интернету включен для подключения: port1"

Шаг 3: Запуск сценария

Сохраните написанный код в файл с расширением .ps1, например EnableICS.ps1, и выполните его в Powershell:

.\EnableICS.ps1

Вариант использования C

Если вы хотите использовать C#, можно воспользоваться библиотекой HNetCfg, чтобы достичь аналогичного результата. Пример кода на C# будет выглядеть следующим образом:

using System;
using System.Runtime.InteropServices;

class Program
{
    static void Main()
    {
        var sharingManager = new HNetCfg.HNetShare();
        var connections = sharingManager.EnumEveryConnection();

        foreach (var connection in connections)
        {
            var connectionProps = sharingManager.NetConnectionProps.Invoke(connection);
            if (connectionProps.Name == "port1") // Замените на ваше имя подключения
            {
                var config = sharingManager.INetSharingConfigurationForINetConnection.Invoke(connection);
                config.EnableSharing(1); // Включить общий доступ
                Console.WriteLine("Общий доступ к интернету включен для подключения: port1");
            }
        }
    }
}

На этом этапе, вы сможете включить интернет-расшаривание для ваших сетевых адаптеров, используя как Powershell, так и C#. Убедитесь, что у вас есть необходимые права доступа для выполнения данных команд.

Заключение

Настройка общего доступа к интернету в Windows может показаться сложной задачей, но с помощью описанных выше методов можно значительно упростить этот процесс. Использование Powershell или C# для автоматизации включает в себя создание сценариев, которые обеспечивают необходимость администраторских прав, но позволяют быстро и эффективно включать ICS для нужных сетевых адаптеров. Применяйте приведенные примеры в своей практической деятельности и облегчите процесс администрирования сетей.

Оцените материал
Добавить комментарий

Капча загружается...