インターネットにワイヤレスで接続しているときにWindows7で自動WindowsUpdateを無効にする方法を探しています。
クライアントはすべて2008R2ドメインコントローラーに接続されています。
簡単なグーグル検索をして、私は何も見つけることができませんでした。
私が推測するこれを達成する方法がなければなりません。
レジストリキー、またはこれを行うのに役立つグループポリシーハックを知っている人はいますか?
ありがとう
たぶん、この高速にハッキングされたが本当に簡単なC#コードを使用できます。これを、ターゲットマシンに展開される(GPOを介して)独自の「サービス」に配置することをお勧めします。
コードは何をしますか:「NetworkInformation.NetworkAddressChanged」にイベントハンドラーを作成します。これは、ネットワークインターフェイス上の何かが変更された場合(たとえば、WIFIが非アクティブ化された、IPアドレスが変更された、ラップトップがイーサネットに配置された場合)に常にトリガーされます。次に、少なくとも1つのイーサネットネットワークインターフェイスが稼働しているかどうかを確認します。稼働している場合は、「Windows Update」サービスを開始します。稼働していない場合は、「WindowsUpdate」サービスを停止します。
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");
}
}
}
}
}
どう思いますか?
どれだけ効率的かはわかりませんが、WLANアダプターを介してネットワーク接続(カードが有効になっている、IPアドレスを取得している)を実行およびチェックするスクリプトを修正して、WindowsUpdateサービスを停止することができます。ちょっとした考え