こんにちは!今回は、Windows10で困ったことがあったのでその事象と解決方法を紹介します。
その困った事象は、Windows10のオプション機能がインストールできないというものです。
これは多分、一般向けのパソコンでは原理的に発生しないものかと思います。企業向けに準備されたWindows特有の問題と思います。
オプション機能は代表的なもので言うと、.NET Frameworks 3.5 や RSAT、XPSビューアーなどが挙げられると思います。これらはデフォルトで機能が無効になってるため、有効化する作業が必要になります。まさにその際、私の環境で発生してしまいました。
Windows10は常に進化していくOSとマイクロソフトからアナウンスされています。当然、更新されていくたびに機能は更新されていきます。しかしその分、無効になっていく機能も増えていきます。それをきっかけとして、今までは起こりえなかったエラーが発生してしまいます。
今回はそんな更新に伴う問題のスタディケースになるかと思います。
発生した事象について
この事象はWindows10のオプション機能のインストールにて発生します。
オプション機能とは、簡単に説明すると、.NetFrameWork3.5やRSAT、XPSビューア、Internet Explorerなど、Windowsの標準では無効化されている機能を後から追加する機能です。
更新に伴って標準から外れてしまった機能もここからインストールできたりします。
FOD(Feature On Demand)とも呼ばれ、マイクロソフトのサーバからダウンロードしてインストールしてくれます。
※このぺージにたどり着く方はすでに把握していらっしゃるでしょうから、やり方は割愛します。
しかし、この機能を使ってインストールを行った際に、下記のような画面が表示されてエラーになってしまうことがあります。
これが今回困ったことになった、0x800F0954のエラーです。
この状態ではオプション機能を有効にすることはできません。
考えられる原因
今回調査した結果、WSUSのサーバがあるネットワーク環境下で発生することが確認できました。
WSUSはWindowsUpdate等の更新を企業で管理するために設置されることが多いものです。
主に、適用したくないUpdate等を除外するように、必要な更新プログラムのみを配置していることが多いと思います。
ですが、このWSUSサーバがネットワーク内にあると、今回のFODを使ったインストール時にもマイクロソフトのサーバを見に行かず、内部のWSUSサーバへやり取りをしに行っていることを確認しました。
結果、WSUS側でFODを使えるように構成していない場合、上記のエラーでインストールが失敗してしまうのです。
対策法-ローカルGPOで回避させる-
今回は事象の性質上、ローカルGPOで回避するのが適切かと思います。
私の遭遇した事象では、下記2点の変更が必要でした。
※ローカルGPOのエディターは「gpedit.msc」をファイル名を指定して実行(Windowsキー+R)へ入力し「OK」をクリックすれば起動します。
①[コンピューターの構成]→[管理用テンプレート]→[Windows Update]→[インターネット上のWindows Updateに接続しない]を「無効」に設定
②「コンピューターの構成->管理用テンプレート->システム」の「オプションコンポーネントのインストールおよびコンポーネントの修復のための設定を指定する」を「有効」に設定し、「Windows Server Update Services (WSUS) の代わりに、Windows Updateから修復コンテンツとオプションの機能を直接ダウンロードする」をチェックを入れる
最後に「gpupdate /force」を管理者のコンソールで実行してポリシーを適用すればOKです。
この後にもう一度オプション機能のインストールをトライしてみてください。
自分の環境ではこれでインストールができました。
※気になる様であれば、一度再起動してからインストールを実行してください。
対策法-レジストリで回避する- ※2021/2/12追記
レジストリを編集して回避することもできるようでしたので、追記しました。
レジストリの情報は下記の通りです。
このレジストリは一度も追加したり、GPOで設定しない限りは存在しないので、新規に作成してください。この値を「0」に設定し、サービスを再起動後FODのインストールを実行すると正常に完了できる様です。
完了後は、レジストリを削除し、同様にサービスを再起動すれば元の環境に戻せるかと思います。
それでもインストールできない時は
OS修復を試みる
上記の通り、Windowsが正常であればマイクロソフトのサーバとのやり取りをWSUSが阻害してしまうため発生するものだと思われますが、それはOSが正常であればです。
何かしらのOS破損があり、予想外の動きをしてしまったが故に発生している場合もあります。
その場合も考え、OS修復を行ってみても良いかもしれません。
FODのISOからインストールする
オプション機能の追加には、別途オフラインでインストールする方法がマイクロソフトより提供されています。
Windows 10 におけるオプション機能 (FOD) の追加について
オンデマンド機能
Windows 10 で導入されたオンデマンド機能 v2 (機能) は、いつでも追加できる Windows 機能パッケージです。 一般的な機能として、手書き認識や .NET Framework (.NetFx3) などの言語リソースが含まれています。
ただ、こちらはボリュームライセンスセンターからISOをダウンロードする形になるので、一般ユーザー向けの手段ではないと思います。そもそもこの事象が発生するケースはWSUSを導入しているそれなりの規模を持った組織になるでしょうから、この方法も有用かもしれません。
※機会があればFODのオフラインインストールについても記事にしたいと思います。
あとがき
今回は0x800f0954エラーの回避方法について紹介させていただきました。
本来であればこのエラーが出るということはWSUSの構成に問題があるのが原因なのですが、そういった場合、大きな企業ですと往々にして対応が遅れがちです。業務に影響が出てきて初めて着手され、完了するまで相当な時間を待たされてしまうという話はよく聞きます。
この方法であれば、ユーザー側だけの設定で一時的に回避することができますので、無用にやり取りをして時間を浪費することもしなくて済むでしょう。
.NET Framework 3.5やRSAT、XPSビューア等は業務に直結する会社も少なくないでしょうから、待たされる=業務ストップに近しいことになってしまいますね。
ただ、今回の方法はあくまで回避する方法です。
本当の原因は別にありますので、WSUSの管理担当者へ連絡し対応を促すのが本来の道だと思いますね。
何かのお役に立てれば幸いです。