none
「VC++ Express Edition」に適切なSDKとは? RRS feed

  • 質問

  • 現在、「Windows XP Pro(SP2)」上で、「Visual C++ 2005 Express Edition(SP1)」+「Platform SDK(R2)」+「WTL 8.0」で、Windowsアプリケーションを作成しています。

    そこで、素朴な疑問が浮かびましたので、ご存知の方がいらっしゃいましたら、教えて下さい。

    Q1. 「Windows Vista」ではセキュリティ機能(UAC)が改善されたため、一部の「Win32 API」の仕様が変わったと聞いたのですが、本当ですか?

    Q2. 「Visual C++ 2005 Express Edition(SP1)」で、「Windows SDK for Vista」以降の「Windows SDK」を利用した開発は可能でしょうか?それとも、「Visual C++ 2008 Express Edition」に移行しなければ無理でしょうか?

    Q3. 「Visual C++ 2008 Express Edition」に移行した場合、「WTL 8.0」は利用可能でしょうか?インクルードやライブラリのパスの設定は、「Windows SDK」より「WTL 8.0」のパスを優先にした方が良いでしょうか?

    初歩的な質問で、申し訳ないですが、よろしくお願い致します。

    2009年4月29日 0:30

回答

  • A1. Win32 API的にはそれほど仕様は変わっていません。今までと同じように権限のチェックが行われています。UACで変わったのはデフォルトで持っている権限が減らされる点です。そのために権限不足のエラーが発生する可能性があると言うだけのことです。

    A2. 不可能ではありません。いまだにVC6(10年前のコンパイラ)にしがみついている人もいます。ただし、なるべく最新の環境に移行することをおすすめします。そうしないとあなたもすぐに10年遅れになります。

    A3. Visual C++ 2005 Express Editionと異なりVisual C++ 2008 Express EditionにはWindows SDK(for Vista辺りのバージョン)が最初から含まれています。その上でfor Win7などを使いたいなら別途入れることになるでしょう。
    WTLは全然別モノで、Visual C++ 2008 Express Edition付属のファイル、Windows SDK付属のファイルらとはファイルがかぶっていないはずですのでパスの順序は関係ありません。
    結局
    1. (あえて入れるのなら)Windows SDK
    2. Visual C++ 2008 Express Edition
    3. WTL
    の順が妥当でしょう。
    • 回答としてマーク sk7474 2009年5月14日 7:16
    2009年4月29日 1:38
  • > Q1. 「Windows Vista」ではセキュリティ機能(UAC)が改善されたため、一部の「Win32 API」の仕様が変わったと聞いたのですが、本当ですか?

    細かいところまで語り尽くせるほど詳しくないので、「本当ですか?」と問われたもちょっと答えづらいかな。

    例えば、Vistaでは管理者権限で実行しているプログラムと、そうでないプログラム(通常の権限で実行しているプログラム)が同じデスクトップ上にありますよね。
    通常の権限で実行しているプログラムから、管理者権限で実行しているプログラムに属するウィンドウへは、ウィンドウメッセージの扱いに制限が加わっています。
    http://msdn.microsoft.com/en-us/library/ms632675.aspx

    これをAPIの仕様変更と言えるかと考えると、疑問を感じます。


    「Windows Vista アプリケーションの互換性」として、下記のように情報は公開されていますので、必要そうな所は読んでみてはいかがでしょうか。
    http://msdn.microsoft.com/ja-jp/windows/aa904987.aspx

    > Q2. 「Visual C++ 2005 Express Edition(SP1)」で、「Windows SDK for Vista」以降の「Windows SDK」を利用した開発は可能でしょうか?
    > それとも、「Visual C++ 2008 Express Edition」に移行しなければ無理でしょうか?

    Windows SDK側のバージョン次第です。
    例えば、現行のWindows SDKはVC6をサポートしていません。

    こういったものはWindows SDK側の情報で何かしら載っているとは思います。
    (SDK自体に記述が含まれているか、Windows SDKチームのblogになるか)

    ※「以降」というと、未知のものまで含んでしまいそうでしたので、書きました。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答の候補に設定 佐祐理 2009年4月30日 1:24
    • 回答としてマーク sk7474 2009年5月14日 7:16
    2009年4月29日 16:05
    モデレータ

すべての返信

  • A1. Win32 API的にはそれほど仕様は変わっていません。今までと同じように権限のチェックが行われています。UACで変わったのはデフォルトで持っている権限が減らされる点です。そのために権限不足のエラーが発生する可能性があると言うだけのことです。

    A2. 不可能ではありません。いまだにVC6(10年前のコンパイラ)にしがみついている人もいます。ただし、なるべく最新の環境に移行することをおすすめします。そうしないとあなたもすぐに10年遅れになります。

    A3. Visual C++ 2005 Express Editionと異なりVisual C++ 2008 Express EditionにはWindows SDK(for Vista辺りのバージョン)が最初から含まれています。その上でfor Win7などを使いたいなら別途入れることになるでしょう。
    WTLは全然別モノで、Visual C++ 2008 Express Edition付属のファイル、Windows SDK付属のファイルらとはファイルがかぶっていないはずですのでパスの順序は関係ありません。
    結局
    1. (あえて入れるのなら)Windows SDK
    2. Visual C++ 2008 Express Edition
    3. WTL
    の順が妥当でしょう。
    • 回答としてマーク sk7474 2009年5月14日 7:16
    2009年4月29日 1:38
  • > Q1. 「Windows Vista」ではセキュリティ機能(UAC)が改善されたため、一部の「Win32 API」の仕様が変わったと聞いたのですが、本当ですか?

    細かいところまで語り尽くせるほど詳しくないので、「本当ですか?」と問われたもちょっと答えづらいかな。

    例えば、Vistaでは管理者権限で実行しているプログラムと、そうでないプログラム(通常の権限で実行しているプログラム)が同じデスクトップ上にありますよね。
    通常の権限で実行しているプログラムから、管理者権限で実行しているプログラムに属するウィンドウへは、ウィンドウメッセージの扱いに制限が加わっています。
    http://msdn.microsoft.com/en-us/library/ms632675.aspx

    これをAPIの仕様変更と言えるかと考えると、疑問を感じます。


    「Windows Vista アプリケーションの互換性」として、下記のように情報は公開されていますので、必要そうな所は読んでみてはいかがでしょうか。
    http://msdn.microsoft.com/ja-jp/windows/aa904987.aspx

    > Q2. 「Visual C++ 2005 Express Edition(SP1)」で、「Windows SDK for Vista」以降の「Windows SDK」を利用した開発は可能でしょうか?
    > それとも、「Visual C++ 2008 Express Edition」に移行しなければ無理でしょうか?

    Windows SDK側のバージョン次第です。
    例えば、現行のWindows SDKはVC6をサポートしていません。

    こういったものはWindows SDK側の情報で何かしら載っているとは思います。
    (SDK自体に記述が含まれているか、Windows SDKチームのblogになるか)

    ※「以降」というと、未知のものまで含んでしまいそうでしたので、書きました。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答の候補に設定 佐祐理 2009年4月30日 1:24
    • 回答としてマーク sk7474 2009年5月14日 7:16
    2009年4月29日 16:05
    モデレータ
  • こんにちは。中川俊輔です。

    佐祐理さん、Azuleanさん、詳細な回答ありがとうございます。

    ドルフィンキックさん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?疑問は解決しましたか?
    また何かありましたからぜひ質問を投稿してみてください。

    また、有用な情報と思われたため、佐祐理さん、Azuleanさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年5月14日 7:20
  •  佐裕理さん、Azuleanさん、詳しい説明、ありがとうございました!

     フォーラム・オペレータの中川さんにも、お手数をおかけしました。

     お二人の説明により、「Win32 API」の仕様変更は、パラメータ等は、今までどおりで、OS側の挙動が変わったという事が理解出来ました。

     返信が遅くなり、大変、申し訳ありませんでした!<(_ _)>
    2009年10月21日 7:30