TE06:Windows Vista:既存アプリケーションの移行(その1)

posted on 2006年9月7日 22:50 投稿者 Elfaria

Microsoft TechED 2006 Yokohama で行われたセッションのレポートです。
うろ覚えかつ急いでメモを取ってたので間違ってる可能性もあります。
PPTの丸写しは避けたいと思ってますがそのままだったらごめんなさい。

-----

Developer系書くって言っておいて書いてませんでしたごめんなさい。

現在のアプリケーションのVistaへの移行方法です。

ACT(Application Compatibility Toolkit)(リンクは英語ページ)というツールがあります。互換性評価ツールです。そのままです。

旧アプリを移行する際に注意する点は、UACの機能によって動かないソフトウェアが出てくるかもしれない点。
上記ACTのUAC互換性評価ツールで確認した方が良いらしいです。

また、Vistaのアーキテクチャ変更によって発生する問題。

ドライバ書いてる人向けなんですが、Vistaのx64版(64ビット版)では、カーネルモードドライバに関しては、絶対にデジタル署名が必要となるとのこと。
(一応回避策としてセーフモードにてデジタル署名無しでもインストールできるオプションがあるらしい)
あとは、16ビットアプリは動かないよー、とか、ですかね。

UIの特権分離。
この特権分離によって、低い権限のプログラムが高い(上位の)プロセスとの通信ができなくなるらしい。
これは仕様による制限とのこと。
対策は上位プロセスと通信できるように書き換えて、再コンパイル、で、権限の昇格。

ちなみにIE(VistaなのでIE7+)は、最初(基本的には?)権限の低い保護モードで起動し、上位権限が必要な場合は、サービスブローカーの助けを借りて、上位権限に昇格する。

サービスの分離。
セッションを分離して管理する。(ここでいうセッションはTerminal Servicesなどでいうセッションと同義?)
セッション#0はシステムプロセスとサービスのみが動作するセッション。
ユーザーのセッションはセッション#1で動作する。
ちなみにXPの場合、ユーザーの切り替え時とかにはセッションが切り替わったりしていたけど、ドメイン環境では常にセッションは1つで動作している状態。
んで、セッションが分離してると、どういうことが起きるかというと、アプリとサービス、あるいはアプリ同士の通信ができなくなる?(メモなので疑問形)
アプリがサービスが通信しようとした際に、Vistaはそれを察知し、ダイアログが出て、通信するか聞いて来るみたい。
ちなみに、通信したときにセッション#0の画面が出てくるんですが、真っ黒。そりゃシステムプロセスとサービスしか動いてないんだから、真っ黒だよな。

UACとファイルとレジストリの仮想化、リソース保護については以前のBlog記事を参考に。
TE06:Windows Vista:UAC(ユーザーアカウント制御)機能
TE06:Windows Vista:UAC(ユーザアカウント制御)機能 その2
TE06:Windows Vista:Windowsリソース保護

あとは、ネットワーク周りか。
TCP/IPスタックが全面的に書き換えられた。
ということで(?)、IPv6/v4が標準搭載です。
IPv4に関しては、コントロールパネルで無効にできるが、IPv6は、レジストリを書き換えないと無効にできない。

Windows ファイアーウォール
以前はInbound(受信側)のみのファイアーウォール設定だったのが、OutBound(送信側)もチェックできるようになった。
Outbound側の設定にはUACが発動します。

コメント