トップ回答者
「VC++ Express Edition」に適切なSDKとは?

質問
-
現在、「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」のパスを優先にした方が良いでしょうか?
初歩的な質問で、申し訳ないですが、よろしくお願い致します。
回答
-
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付属のファイルらとはファイルがかぶっていないはずですのでパスの順序は関係ありません。
結局
- (あえて入れるのなら)Windows SDK
- Visual C++ 2008 Express Edition
- WTL
- 回答としてマーク sk7474 2009年5月14日 7:16
-
> 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になるか)
※「以降」というと、未知のものまで含んでしまいそうでしたので、書きました。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
すべての返信
-
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付属のファイルらとはファイルがかぶっていないはずですのでパスの順序は関係ありません。
結局
- (あえて入れるのなら)Windows SDK
- Visual C++ 2008 Express Edition
- WTL
- 回答としてマーク sk7474 2009年5月14日 7:16
-
> 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になるか)
※「以降」というと、未知のものまで含んでしまいそうでしたので、書きました。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。