アプリケーションのVista互換について

新宿で行われたマイクロソフト主催のセミナーに参加した。
内容はアプリケーションのVista互換について。
[Vistaの互換性問題]
UAC
一番問題となりそうなのはUACのところで、権限についてきっちりと意識しておく必要がある。
権限はトークンという形で実装されており、
・通常ユーザは制限されたトーク
・管理者権限を持つユーザは制限の無いトークンを持つ。
通常、すべてのユーザは制限されたトークンで動作しており、管理者権限が必要なときはメッセージを表示して無制限

トークンに昇格することで管理者権限となる。
管理者権限を持つユーザはメッセージに答えることで昇格し、通常ユーザは管理者ユーザのパスワードを入力すること

で昇格する。
例外はビルトインのadministrator(デフォルトは無効化されている)でこのユーザだけはメッセージもなく自動的に昇

格する。
互換性検証のときは管理者権限を持つユーザ、administratorの検証が必要。
UAC関連の機能で「プログラム互換性アシスタント(PCA)」というのがある。インストーラーに対して自動的に管理者権

限に昇格する動作をとるものだ。
このプログラムはVistaには実装されているがWindows2008Serverには実装されない。
プログラムのファイル名に*setup*等が含まれるとインストーラーとみなし、管理者に昇格させ、最後にプログラムと

追加と削除にプログラムが追加されないとメッセージを表示するというもの。
仕様として何をインストーラーとみなすかについては公開されていない。
この回避方法はマニフェストファイルを作成し、invokeを設定することにより回避すること。
文字コード
文字コードVistaJIS2004が実装された。いままでのJIS90とは同じコードでも表示される文字が異なったり、新し

い文字が追加されている。
WindowsXP用にJIS2004がリリースされており、Vista用にはJIS90がリリースされている。
○互換モード
CompatAdminというツールをダウンロードすることで互換モードのオプションをEXE単位で細かく設定することができる


設定した内容はデータベースファイルに格納され、そのファイルを配布してインストールすることで、展開が可能にな

る。
インストール方法は
>sdbinst test.sdb

CompatAdminはここから
http://www.microsoft.com/downloads/details.aspx?FamilyID=24da89e9-b581-47b0-b45e-492dd6da2971&DisplayLang=en
APIについて
APIでバージョンを取得するものがあるが、それとは別に機能について取得するメソッドもある。
WindowsXPにSP1を適用したもの」という条件でAPIを発行すれば、WindowsVistaでもtrueとして帰ってくる。
単にバージョンではなくこのようなAPIで判断できるということを把握しておくべき。
バージョン取得
GetVersionEX
機能取得
VerifyVersionInfo
○ファイルのリダイレクト
Document and Settingsというフォルダは存在しないが、このパスに対してファイルを書き込むとusersフォルダに自動

的に書きこまれる。
IE7
IE7Vista版では保護モードで実行されています。
この状態は通常ユーザの権限で実行されています。
保護モードを解除するには、インターネットのオプションで解除してから再起動をするか、管理者権限で実行する必要

があります。
IE7WindowsXP版は保護モードはありません。
○サービスとログインセッションの違い
WindowsXPでは通常最初にログインをしたユーザはセッション0に割り当てられ、サービスもセッション0で動作してい

ました。
この状態でログインユーザの切り替えで違うユーザでログインするとセッション1が割り当てられるようになっていま

した。
Vistaではセッシヨン0はサービス専用となり、ログインするとセッション0が割り当てられます。
問題となるのはセッション0はサービス専用となり、画面を持ちません。そのためメッセージを表示するUIがなくなっ

てしまっています。
サービスからメッセージをUIを通して表示させるような場合には修正が必要になります。
ただしVistaの場合はセッション0でメッセージを表示させようとすると、ログインしているユーザに対してメッセージ

を表示するような仕組みがあります。ただしこれが将来のOSに対して保証されている機能ではありません。

[SoftGrid]
○SoftGridとはなんですか?
実行環境の仮想化ソフトです。
プログラムを仮想するアプリケーション、仮想化されたファイルを配布するサーバ、仮想化されたファイルを実行する

マシンに分けられます。
通常共存ができないVB4とVB6のプログラムを仮想化することで同一端末で実行することも可能になります。
他のプログラムに影響を及ぼすことなくプログラムの実行環境を提供することができます。
○プログラムを実行するのはサーバではない
サーバは仮想されたアプリケーションを配布するだけで実行そのものはクライアントで行います。
そのため、サーバの負荷はターミナルサーバに比べ大きくありません。
○クライアントの動作は
クライアントは仮想化アプリケーションを実行するとサーバに接続を行い最初だけサーバからプログラムファイルをダ

ウンロードします。このときファイルをすべてダウンロードするのではなく必要最低限のサイズをダウンロードします

。実際に使われるときに残りのファイルをダウンロードします。
一度ダウンロードされてしまえば、仮想化ファイルが変更されない限りは既にダウンロード済みの仮想化ファイルを用

いて起動することができます。
○サーバの条件
サーバはドメインである必要があります。クライアントはワークグループからも可能ですが、ドメインにユーザが登録

されている必要があります。