Windows 10 に .NET Framework 3.5 をインストールする

.NET Framework 3.5 をインストールする [コントロール パネル] - [プログラム] - [Windows の機能の有効化または無効化] にて [.NET Framework 3.5 (.NET 2.0 および 3.0 を含む)] にチェックを入れて [OK] をクリックすればインストールすることができる。
実際のインストールは Windows Update 経由で行われるみたい。(よくわからんし、調べるつもりもないけれど)

0x800F081F とか 0x800F0906 とかのエラーでインストールできないよ

ところがタイトルにもある通り 0x800F081F のエラーが出てインストールすることができない場合がある。
Windows Live メールも .NET Framework 3.5 が必須。 実に困った状態。
0x800F081F ってのは 「ソースが見つからない」 っていうエラーらしい。 (よくわからんし、調べるつもりもないけれど) 

0x800F0906 が出た

会社でよく発生しそうなエラー。
PC が .NET Framework 3.5 に必要なファイルを Windows Update からダウンロードできない場合に発生するらしい。
PC が社外と通信するための設定が不完全 (ファイアウォールとかプロキシとか) だったり、WSUS がしゃしゃり出てくるようになっていたり。
もし一時的に WSUS を経由しないで直接 Windows Update サーバーと通信できるように環境を変えられるのなら問題ないらしい。
ということなのだが、GPO で 「WSUS を使わない」 というポリシーをリンクさせた作業用の OU を作成し、作業中の PC をその OU に入れて再チャレンジしてみた。

0x800F081F が出た

似たようなエラー番号なので変化に気づきづらい。
KB2734782 によれば 「代替インストール ソースに指定した場所に必要なものがない、またはそれを読み取る権限がない、または壊れている」 ということらしいが、そんなもんを指定した記憶はない。
ただ単純に Windows の機能から .NET Framework 3.5 を有効にしようとしただけだ。

OS のメディアを使って手っ取り早くインストールした

うちの場合は 0x800F081F だったので Windows 10 のメディアを使って解決した。
メディアは Microsoft からダウンロードした Windows 10 インストール イメージを焼いておいたもの。
こいつを使って .NET Framework 3.5 をインストールできるらしい。 iso を直接マウントしても大丈夫っぽい。
PowerShell を管理者権限で起動して書きのコマンドを打つ。
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source "D:\x64\sources\sxs" -LimitAccess
この場合 Windos 10 のメディアが D: ドライブにあるってことで、Source オプションで sxs フォルダーの位置を指定してあげる。
同様のことは Dism っていうコマンドでも可能らしい。 (よくわからんし、調べるつもりもないけれど)
さらには Fondue というコマンドもあるらしい。 (よくわからんし、以下同文)
TechNet ブログ Windows 8 に .NET Framework 3.5 をインストールする、もう1つの方法 Fondue に一通りかいてある。

KB2966828 (MS14-046) が原因になることがあるらしい

KB2966828 (MS14-046) は .NET Framework のセキュリティ修正プログラムのひとつで、Address Space Layout Randomization (ASLR) というセキュリティ機能を迂回されてしまう脆弱性を修正するらしい。
ASLR ってのはプロセスをロードする場所をランダムな場所にする仕組みらしい。 ランダムな場所にロードすることで、攻撃者が攻撃しづらくするらしい。 (よくわからんし、調べるつもりもないけれど)

ASLR を簡単に説明すれば 「毎回同じトイレの同じ個室で仕事をさぼっているとバレてしまうのでランダムな個室を選択する」 ということ。

この KB2966828 は PC に .NET Framework 3.5 がインストールされていることを前提としているらしいので、KB2966828 をインストールした後に初めて .NET Framework 3.5 を有効にしようとするとエラーになるようだ。
例えば 「社内で PC をセットアップする際に Windows Update でガンガン攻めて、最後に Windows Live メールをインストールしようとして .NET Framework 3.5 を有効化しようとしたらエラー」 とか。

で、Windows 8.1 以前や Server 2012 R2 以前の Windows にはさらなる修正プログラム KB305628 が用意されている。
以前の Windows であればこの修正プログラムを適用すれば問題が解決するらしい。

Windows 10 用の修正プログラムは用意されていないようだ。。。
Web をさまよってみると 「Windows 10 ではコマンド プロンプトからの Dism コマンドや、PowerShell の Enable-WindowsOptionalFeature コマンドレットでならインストールできた」 という情報もあるし、一時的に KB2966828 をアンインストールしたって話もある。
まぁいろいろ選択肢があるってことで。