Visual Studio 2010でWindows SDK 7.1が見つからない?とか言われる。入ってるっての。

前提として、Windows10 64bit版
VS2010 + WindowsSDK7.1使ってるソリューションを修正する仕事を受けて、ソース貰ってビルドしてみたら

エラー 339 error : Windows 7.1 SDK not found. Please make sure that the Windows 7.1 SDK is installed on the machine. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\Windows7.1SDK\Microsoft.Cpp.Win32.Windows7.1SDK.targets 19 6 xxxx

ってエラーが出てビルド出来ない。

これの解決にかなり時間がかかった。

もちろんWindowsSDK7.1はインストールしたはずだったんだけど、一応再インストールしとこうと思って、WSDK7.1のインストーラを以下より入手して起動してみた。
Microsoft Windows SDK for Windows 7 and .NET Framework 4

まずこんなメッセージが表示される。

Some components cannot be installed
Some Windows SDK components require the RTM .NET Framework 4.
Setup detected a pre-release version of the .NET Framework 4.
If you continue with setup, these components will not be installed.
If you want to install these components, click Cancel, then install the .NET Framework 4 from http://go.microsofct.com/fwlink/?LinkID=187668 and then return Setup

「.NET Framework4のランタイム版が入ってないと一部のコンポーネントが入らないよ?プレリリース版ならあったけどコレジャナイよ」
みたいな。

で、続けると
WSDK71_a
幾つかのチェックがDisabledでチェック付けられない。
特に必要なのはWindows Native Code DevelopmentのVisual C++ Compilersらしい。

で、ここから長く苦しい戦いがあった訳なんだけど、やったことだけ箇条書きする。
まず
・VisualStudio2010のインストールディスク
・WindowsSDK7.1(Microsoft Windows SDK for Windows 7 and .NET Framework 4)
・VisualStudio2010 SP1
VC-Compiler-KB2519277
を用意しておく。

VisualStudio2010 SP1は現時点だとここから入手できる。
Microsoftアカウント(?)が必要。なければ登録する(無料)
で、検索テキストボックスで「Visual Studio 2010 Service Pack 1」で検索して
「Visual Studio 2010 Service Pack 1」を探す。似たようなのが色々あるけど、コレを探す。
言語プルダウンを「Japanese」にして[Download]でOK

で、戦いの記録。

  1. WSDK7.1をアンインストール
  2. VS2010SP1をアンインストール
  3. VS2010をアンインストール
  4. 全てのバージョンの.NET Frameworkをアンインストール
    上のバージョンから順に。やらなくて良いかもしれない
  5. VS2010を再インストール
  6. WSDK7.1をインストール
  7. VS2010SP1をインストール
  8. VC-Compiler-KB2519277をインストール

6.のWSDK7.1の再インストールが複雑なので詳しく。
stackoverflowのこのページを参考にした。
Google翻訳マジ感謝
やっぱり他にも同じ症状の人は居るっぽい。

まず、レジストリを書き換える。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full\Version
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version

この値をメモ帳なりなんなりにメモって保存しておく。この後再起動掛かるかもしれないから保存忘れないように。再起動しないかもしれないけど。

次に、上記2箇所の値を、InstalledPathのバージョンと一致させる。
reg2
上の画像だと「4.0.30319
多分保存出来ないと思う。権限が無いから。
なので権限をどうにかする。
保存できるのならWSDK7.1をインストールして、戻せばいい。

権限を変える方法は、

  1. Clientキーを右クリック→「アクセス許可」をクリック
    reg1
  2. 「追加」ボタンを押す。
    reg3
  3. 「選択するオブジェクト名を入力してください」欄に、今ログインしているユーザ名を入力して「OK」
    reg4
  4. 「詳細設定ボタン」クリック
  5. 所有者の「変更」リンクをクリックして、2で追加したようにユーザー名を入力して「OK」
    reg5
  6. 「サブコンテナーとオブジェクトの所有者を置き換える」にチェックを入れて「OK」
  7. 追加したユーザーを選択して「フルアクセス」にチェックを入れて「OK」

これでアクセス権限を得られたので、Versionの値を書き換える。
同様の方法でFullのほうも書き換える。

書き換えたらWSDK7.1をインストールする。
書き換える前と違ってチェック項目が変更できるようになっているはず。
必要な項目に(もしくは全てに)チェックを入れてインストールする。

WSDK7.1のインストールが終わったら、レジストリの権限を元に戻す。
戻さないとVS2010SP1のインストールがおかしな事になるので忘れないように。
所有者を「TrustedInstaller」に戻すには「NT SERVICE\TrustedInstaller」と入力する。


コレで最初の「Windows SDK 7.1が無いよ!」ってエラーは出なくなった。

が、なぜか「new.h」が見つからないとか怒られた。
標準インクルードパス見に行ったら確かに無い。インストールミスってた。
再度VS2010SP入れ直したら治った。なんなのよもー。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

認証のために問題を解いて下さい * Time limit is exhausted. Please reload CAPTCHA.