Я ищу способ отключить автоматические обновления 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");
}
}
}
}
}
Что вы думаете?