禁用 WLAN 客户端的自动 Windows 更新

禁用 WLAN 客户端的自动 Windows 更新

我正在寻找一种方法来在无线连接到互联网时禁用 Windows 7 上的自动 Windows 更新。

客户端全部连接到 2008 R2 域控制器。

快速进行谷歌搜索,我什么也没找到。

我认为一定有办法实现这一点。

是否有人知道注册表项或一些组策略黑客可以帮助我做到这一点?

谢谢

答案1

也许您可以使用这个快速破解但非常简单的 C# 代码。我建议将其放入自己的“服务”中,该服务将部署(例如通过 GPO)在目标计算机上。

那么代码的作用是什么:它在“NetworkInformation.NetworkAddressChanged”上创建一个事件处理程序,如果网络接口上发生某些变化(例如 WIFI 已停用、IP 地址已更改、笔记本电脑已接入以太网),该事件处理程序始终会触发。然后,它会检查是否至少有一个以太网网络接口已启动:如果已启动,则启动“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");
                }
            }
        }
    }
}

你怎么认为?

答案2

不确定效率如何,但您可以编写一个脚本,通过 WLAN 适配器运行并检查网络连接(卡已启用,已获取 IP 地址),然后停止 Windows 更新服务。只是一个想法

相关内容