Masato's IT Library

Microsoftの製品・サービスを中心に,色々と書いていきたいと思います

Windows Updateによる自動再起動を阻止する方法(Vista以降全バージョン対応)

はじめに

月次もしくは臨時のWindows Updateでは,コンピュータの再起動が求められることが多いですよね.

そんな時,おそらく誰もが経験したことがある(?)のが,

「実行中の処理があるため今再起動されると困る」

「放っておいたら文書が保存されずに再起動していた」
(こまめに上書き保存しましょう)

ということ.

しかしながら,自動更新やWindows Update自体を停止してしまうことは, 脆弱性や攻撃からの保護の観点から,好ましいものではありません.

(こちらはサービスごと止めちゃうタイプ)

forest.watch.impress.co.jp

そこで,今回はユーザが「サインイン(ログオン)しているときのみ」自動で再起動が行われることを防ぐ方法をお伝えします.

なお,今回の手順を行うとユーザがサインインしている限り自動で再起動は行われなくなりますが,
安全性のためにも 出来るだけ早く手動で再起動するようにしましょう!!

今回行う手法では,Windows Updateサービスの停止やレジストリの直接的な変更を行うのではなく, 企業等においてコンピュータの動作を制御するために用いられる「ポリシー」(グループポリシー)を変更します.
そのため,変更を誤ってもコンピュータが起動しなくなるなどの問題が発生することはなく,変更を元に戻す際にも副作用等が発生することがありません.

Windows 10からのアップデート仕様の変更

Windows 10からは,脆弱性の対処をより迅速に行うために,これまでのWindowsと異なり, Windows Updateの自動更新を設定からOFFにすることはできなくなりました.
また,自動更新適用後の再起動に関しても,あらかじめ設定した「アクティブ時間」以外では自動で再起動が行われるようになりました.(Pro以上のみ)

f:id:mst8000:20161208193504p:plain:w400

なお,今回の手順を適用することで,Windows 10でも同様に自動再起動が行われないようにすることができます. (Windows 10 Pro Anniversary Update (Version 1607)で確認)

適用手順

では,実際に設定を変更していきます.
以降の作業はすべてWindows 10 Pro Version 1607(Anniverssary Update)で行っていますが, 全てのWindowsでほぼ同じ作業手順となっています.(ただし全てPro相当以上のエディションのみ

また,以降では,管理者によって管理されていない通常のコンピュータにおける手順を示しています. Active Directory配下の場合は管理者が適切なGPOを編集することで適用することができます.

ローカルポリシーエディタを開く

コマンドプロンプトもしくは「ファイル名を指定して実行」ダイアログにgpedit.mscと入力して 「ローカルグループポリシーエディター」を開きます.
(Cortanaに「ローカルグループポリシー」と入力しても開くことができます.)

f:id:mst8000:20161208191101p:plain:w400

f:id:mst8000:20161208191220p:plain:w500

ポリシーを編集する

  1. ローカルグループポリシーエディターの左ペインで
    「コンピューターの構成」→「管理用テンプレート」→「Windowsコンポーネント」→「Windows Update
    と辿ります.
    f:id:mst8000:20161208194124p:plain:w600

  2. ポリシーによるWindows Updateの制御を有効にします.
    右ペインの「自動更新を構成する」をダブルクリックして設定ダイアログを開きます.
    f:id:mst8000:20161208194327p:plain:w600

  3. ①「有効」を選択し,
    ②「5 - ローカルの管理者の設定選択を許可」をドロップダウンから選択します.
    ③最後に「OK」を押してダイアログを閉じてください f:id:mst8000:20161208194605p:plain:w600

  4. 次に,ユーザがサインインしている状態での自動再起動を抑止します.
    ローカルグループポリシーエディターの右ペインで「スケジュールされた自動更新のインストールで、ログオンしているユーザーがいる場合には自動的に再起動しない」をダブルクリックして開きます.
    f:id:mst8000:20161208195357p:plain:w600

  5. 「有効」を選択してから「OK」を選択してダイアログを閉じます.
    f:id:mst8000:20161208195549p:plain:w600

以上でポリシーの編集は完了です. f:id:mst8000:20161208195644p:plain:w600

ローカルポリシーの適用

ポリシーを編集しても,すぐに設定は反映されません.
コンピュータを再起動するか,次のコマンドを管理者コマンドプロンプトから実行して, ポリシーを適用してください.

gpupdate /force

f:id:mst8000:20161208184454p:plain:w400

おわりに

以上で,ユーザがサインインしている間のWindows Updateによる自動再起動をブロックすることができるようになりました.

なお,頭でも述べましたが,脆弱性対策,安全性のためにも,
出来るだけ早く手動で再起動するようにしましょう!!

Windowsのインストーラディスクの作り方

Windowsクリーンインストールする際には,DVDなりUSBフラッシュメモリといったインストールメディアが必要となります.

しかしながら,最近主流となりつつあるダウンロード販売や,MSDN Subscription,Microsoft Imagine(旧Dream Spark)といったサービスでは,isoファイル等のディスクイメージの形でのみWindowsのインストールメディアが入手出来るようになっています.

仮想環境に展開する場合はそのままでもよいのですが,物理環境にWindowsをインストールするためにはisoファイルからインストールメディアを作成することが必須となりますので,その方法を書きたいと思います.

DVDメディアへ書き込む場合

Windows 7以降では,OS標準機能として,CDやDVDへのisoファイルの書き込みに対応しています.

  1. isoファイルのファイルサイズに比べて十分大きな容量のブランクディスク(DVD-R/RWなど)をディスクドライブに入れます.このとき,自動再生メニューが表示されたらキャンセルを選択してください.

  2. 書き込むisoファイルを右クリックして「ディスク イメージの書き込み」を選択します.
    f:id:mst8000:20161013114436p:plain

  3. 「書き込み」をクリックして,書き込みを開始します.正しく書き込めているか確認する(ベリファイ)には「書き込み後のディスクの確認」にチェックを入れておくとよいです.
    f:id:mst8000:20161013115018p:plain

  4. 書き込み作業が終了すると,インストールメディアの作成は完了です.

USBフラッシュメモリへ書き込む場合

USBメモリのフォーマット

注意:USBフラッシュメモリの内容がすべて消去されます.必要なファイル等は必ずバックアップを取ってください

  1. USBフラッシュメモリをPCに差し込みます.

  2. エクスプローラで対象のドライブを右クリックして「フォーマット(A)...」を選択します.
    f:id:mst8000:20161013115755p:plain:w400

  3. 図のようにファイルシステムを「FAT32」に設定して,フォーマットを「開始(S)」します.
    f:id:mst8000:20161013115848p:plain:w200

以降,差し込んだUSBフラッシュメモリのドライブをF:とします.

isoファイルのマウント

Windows 8以降では,OS標準機能として,isoファイルの仮想ドライブとしてのマウントに対応しています.

書き込むisoファイルをダブルクリックして,isoファイルを仮想ドライブとしてマウントします.
以降,isoファイルをマウントしたドライブをG:とします.

f:id:mst8000:20161013120037p:plain

イメージ内容のコピー

マウントしたisoファイルにあるファイル(G:\以下)のすべてのファイルUSBフラッシュメモリF:\)にそのままコピーします.

f:id:mst8000:20161013120729p:plain

ブータブルディスクとして設定

イメージ内容をコピーしただけのUSBフラッシュメモリは,そのままではWindowsのインストールメディアとして利用することができません.イメージファイルに含まれるツールを用いて,ブータブルディスクとして設定します.

  1. まず,コマンドプロンプトもしくはPowerShellを「管理者として実行」します.
    Windows 8以降ではWindowsキー+Xを押して出るメニューから選択して簡単に起動できます.
    f:id:mst8000:20161013123348p:plain:w200

  2. cdコマンドでマウントしたイメージファイルG:\)のbootフォルダに移動します.
    cd /D G:\boot
    f:id:mst8000:20161013124251p:plain:w400

  3. USBフラッシュメモリをブータブルディスクとして設定します.
    次のコマンドを実行してください.(USBフラッシュメモリF:
    bootsect /nt60 F:

  4. 次のように処理が成功したことを確認します.
    f:id:mst8000:20161013124452p:plain:w400

以上でインストールメディアの作成は完了です.

PowerShellでリモートからコマンドを実行する

はじめに

みなさん,Linuxの管理時にSSHは使われますか?(使われますよね)
Windowsでも,リモートデスクトップではなく,PowerShellを使ってリモートからアクセスしたい!と思いませんか?(思いますよね)

ここでは,Windows 7以降を実行するWindows(Server・コンシューマどちらでも)に対して,リモートからPowerShellを用いてアクセスする方法を書きたいと思います.

WinRM (Windows Remote Management)を有効にする

接続のホストで,一度だけ次のコマンドを実行して,WinRMを有効にします.

Enable-PSRemoting

この時,ネットワークの設定が「プライベート」でない場合,エラーが発生して停止してしまいますので,ネットワークの設定を変更するか,次のコマンドで強制的にWinRMを有効にします.

Enable-PSRemoting -SkipNetworkProfileCheck

同様に,接続のホストでも先ほどのコマンドを実行してWinRMを有効にします.

なお,WinRMを有効にすることで,ファイアウォールの5985番ポートがオープンしますのでご注意ください.

TrustedHostsを設定する

WinRMでは,接続のホストから見て,接続のホストが「信頼できるホストである」ことが必要です.
Active Directory配下にどちらのホストも存在する場合は問題ないのですが,ワークグループ環境などでは,次のコマンドを用いて個別に接続先のホストを信頼してあげる必要があります.

接続のホストから,次のコマンドを実行してください.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value (ホスト名 or IPアドレス or *)

実行すると次のようなメッセージが表示されますから,Yを入力して続行します.

WinRM セキュリティの構成。
このコマンドは WinRM クライアントの TrustedHosts の一覧を変更します。TrustedHosts
の一覧内にあるコンピューターは認証されない可能性があります。クライアントはこれらのコンピューターに資格情報を送信する可能性があります。この一覧を変更します
か?
[Y] はい(Y) [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
  • 複数のホスト名やIPアドレスを設定する場合
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "host1, host2"

  • すべてのホストを信頼する場合
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"

  • 現在設定されているTrustedHostsを確認
    Get-Item WSMan:\localhost\Client\TrustedHosts

  • 設定されているTrustedHostsをすべて消去
    Clear-Item WSMan:\localhost\Client\Trustedhosts

これで,接続前の準備は完了です(2回目以降は行う必要はありません)

セッションを開始する

次のコマンドにより,リモートマシンへの接続を開始します.
コマンド実行後にパスワードを入力するダイアログが開きます.

Enter-PSSession -ComputerName (ホスト名) -Credential (ユーザ名\ドメイン)

以降,ローカルマシンと同様にリモートコンピュータ上でPowerShellによる操作を行うことができます.

セッションを終了する

セッションを終了する場合は次のコマンドを実行します.

Exit-PSSession

便利なコマンド

yomon.hatenablog.com

tech.guitarrapc.com

tech.guitarrapc.com

ネットワーク接続がおかしくなった時に試すこと

ネットワーク接続がどうもおかしくなった時に試すことを書き並べます.

0. 本当に切れているのか確認

コマンドプロンプトWindows)やターミナル(Mac)を起動して,ping 8.8.8.8と打ち込んでEnterを押します.
Windowsなら,WindowsキーRを同時に押して,出てきたダイアログにcmdと打ち込んでEnterを押せば立ち上がります.

次のように「損失が0%」と表示されれば,インターネットにはつながっています.

ping 8.8.8.8

8.8.8.8 に ping を送信しています 32 バイトのデータ:
8.8.8.8 からの応答: バイト数 =32 時間 =10ms TTL=58
8.8.8.8 からの応答: バイト数 =32 時間 =7ms TTL=58
8.8.8.8 からの応答: バイト数 =32 時間 =14ms TTL=58
8.8.8.8 からの応答: バイト数 =32 時間 =16ms TTL=58

8.8.8.8 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 7ms、最大 = 16ms、平均 = 11ms

続いて,ping www.google.co.jpと打ち込んでEnterを押します.

ping www.google.co.jp

www.google.co.jp [216.58.197.131]に ping を送信しています 32 バイトのデータ:
216.58.197.131 からの応答: バイト数 =32 時間 =19ms TTL=54
216.58.197.131 からの応答: バイト数 =32 時間 =18ms TTL=54
216.58.197.131 からの応答: バイト数 =32 時間 =20ms TTL=54
216.58.197.131 からの応答: バイト数 =32 時間 =26ms TTL=54

216.58.197.131 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 18ms、最大 = 26ms、平均 = 20ms

こちらも損失が0%なら問題はありません.

1. Windowsネットワーク診断による自動修復を試す(Windows

次の記事に従い,XP以降のWindowsに標準で装備されているネットワーク診断ツールを実行してみます.
すぐに修復可能な問題が見つかれば,自動で修復を実行してくれます.

www2.mouse-jp.co.jp

2. IPアドレスの強制再取得(Windows

スタートメニューから「コマンドプロンプト」を探して,右クリック,「管理者として実行」をクリックしてください.

f:id:mst8000:20160913005055p:plain:w400

黒い画面が立ち上がったら,次のコマンドを1行づつ順番に入力してEnterを押してください.

ipconfig /release *
ipconfig /flushdns
ipconfig /renew

3. LANケーブル・無線LANアダプタの確認

有線LAN接続の場合はLANケーブルが抜けていないか,無線LAN接続の場合はアダプタが抜けているもしくはOFFになっていないことを確認しましょう.よくあることです.

4. PCの再起動・掃除

解消されなければ,とりあえず,PCを再起動しましょう.
もし,PC内部が埃で詰まっているようなことがあれば,シャットダウンしてACアダプタを抜き,内部を掃除してください.
熱がたまるといたるところに不調が現れます.

5. ルータの再起動

それでも治らなければ,途中にあるルータやスイッチングハブをすべて再起動しましょう.
大体はACアダプタをぶちっと抜いて,ちょっと経ってから差しなおせばOKです.

6. ネットワークアダプタの初期化(Windows

ネットワークアダプタを初期化してみます.
2.と同様に,コマンドプロンプトを管理者として実行してください.

続いて,次のコマンドを入力してEnter,完了したらPCを再起動してみてください.

netcfg -d

それでもなおらん

以上の手順を試しても復旧できない場合は,デバイスに物理的な問題が発生している,もしくはインターネットプロバイダに障害が発生していることが考えられます.