Назад | Перейти на главную страницу

Отключить автоматическое обновление Windows для клиентов WLAN

Я ищу способ отключить автоматические обновления Windows в Windows 7 при беспроводном подключении к Интернету.

Все клиенты подключены к контроллеру домена 2008 R2.

Проведя быстрый поиск в Google, я вообще ничего не нашел.

Я полагаю, должен быть способ добиться этого.

Кто-нибудь знает ключ реестра или какой-нибудь взлом групповой политики, который поможет мне в этом?

Спасибо

Не уверен, насколько это будет эффективно, но вы можете исправить сценарий, который запускает и проверяет сетевое подключение (карта включена, вытащил IP-адрес) через адаптер WLAN, а затем останавливает службу обновления Windows. Просто мысль

Может быть, вы сможете использовать этот быстро взломанный, но действительно простой код C #. Я бы посоветовал поместить это в собственную «службу», которая будет развернута (например, через GPO) на целевых машинах.

Итак, что делает код: он создает обработчик событий в "NetworkInformation.NetworkAddressChanged", который всегда срабатывает, если что-то в сетевых интерфейсах изменяется (например, WIFI был деактивирован, IP-адрес изменен, ноутбук подключен к сети Ethernet). Затем он проверяет, включен ли хотя бы один сетевой интерфейс Ethernet: если да, запустите службу «Центр обновления Windows» - если нет, остановите службу «Центр обновления Windows».

namespace WindowsUpdateLANOnly
{
    class Program
    {
        static void Main(string[] args)
        {
            //NetworkInformation from reference: System.Net.NetworkInformation
            NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(AddressChangedCallback);
            Console.WriteLine("Listening for address changes. Press any key to exit.");
            Console.ReadLine();
        }

        private static void AddressChangedCallback(object sender, EventArgs e)
        {
            //handle only events from the ethernet network interface
            var adapters = NetworkInterface.GetAllNetworkInterfaces().Where(p => p.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
            //check if we have at least one ethernet network interface online
            bool isOnLAN = false;
            foreach (NetworkInterface ethernetNetwork in adapters)
            {
                Console.WriteLine("   {0} is {1}", ethernetNetwork.Name, ethernetNetwork.OperationalStatus);
                if (ethernetNetwork.OperationalStatus == OperationalStatus.Up)
                {
                    isOnLAN = true;
                }
            }
            //deactivate or activate the windows update service
            WindowsUpdateService(isOnLAN);
        }

        private static void WindowsUpdateService(bool start)
        {   //ServiceController from reference: System.ServiceProcess
            ServiceController sc = new ServiceController("Windows Update");

            Console.WriteLine("Try to {0} the windows update service", start?"Activate":"Deactivate");
            if (start) //should start
            {
                if(sc.Status.Equals(ServiceControllerStatus.Stopped) ||
                    sc.Status.Equals(ServiceControllerStatus.StopPending))
                {
                    sc.Start();
                    //var timeout = new TimeSpan(0, 0, 5); // 5 seconds
                    //sc.WaitForStatus(ServiceControllerStatus.Running, timeout);
                    Console.WriteLine("Windows update service started");
                }
            }
            else //should stop
            {
                if (sc.Status.Equals(ServiceControllerStatus.Running) ||
                    sc.Status.Equals(ServiceControllerStatus.StartPending))
                {
                    sc.Stop();
                    //var timeout = new TimeSpan(0, 0, 5); // 5 seconds
                    //sc.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
                    Console.WriteLine("Windows update service stopped");
                }
            }
        }
    }
}

Что вы думаете?