メイン

Windows アーカイブ

2007年11月23日

Windows Vista 初体験

071123.jpg以前に納品したソフトの互換性チェックのために Windows Vista に触ってみた。これまでショップでせいぜい1分間ぐらいは Windows Vista マシンを触ったことがあったのだけど、真剣に Windows Vista を使うのは実は初めてかもしれない。対象マシンは Dell 製のノートパソコン現行機種をクライアントから借用させてもらっている。このマシンは、購入時には Windows XP Professional がインストールされていたのだけど、先日 Dell から Windows Vista アップグレードディスクなるものが届いたとのことで、そのディスクも借用させてもらった。それを使って OS を Windows Visa へアップグレードしてから、肝心のソフトの互換性チェックを行ったわけである。

リリース直後の OS には手を染めずに、少なくともサービスパックがリリースされるまでは様子を見ろ、などと言われることが多いようだけど、まあ今回は目的が目的なだけにそういうわけにも行かない。実際に使ってみたら案の定幾つかの細かい(?)トラブルに見舞われた。

  • Office 2003 の CD-ROM を挿入すると自動再生のダイアログが表示されるが、放っておくとダイアログが(応答なし)になることが繰り返し起こった。
  • 自動再生の確認ダイアログで実行を選択していないまま、そのダイアログの裏で自動実行されてしまうことがあった(確認ダイアログの意味が無い)。
  • Office 2003 のインストール中に CD-ROM ドライブが消えてしまった。インストーラはファイルの所在を指定しろというダイアログを表示する。エクスプローラで見てもドライブが表示されないのでドライブが突如認識されなくなったのだろうか。
  • Explorer が落ちた。システムのメッセージが表示された。タスクバーやデスクトップ上のアイコンなどは全く表示されない。しょうがなく Ctrl+Alt+Del でログオフしてログインしなおした。

常用マシンを Windows Vista にアップグレードするのはまだ時期早々だけど、いつかはそうしなければならない。その日に備えて情報収集は欠かせない。

2007年11月27日

Windows Vista の User Account Control (UAC)

ここ数日、以前に作成したソフトの Windows Vista 上での動作テストをしている。システムユーティリティのカテゴリに属するようなソフトで、大抵の機能は問題なく動作しているのだけど、Windows サービスに触る部分がうまく動いてくれない。具体的には、サービスコントロールマネージャ(SCM)やサービス自体をオープンする時点でアクセス拒否のエラーが返ってくる。その原因は Vista で採用された新しい仕組みあるようだ。

Windows Vista では User Account Control (UAC)という、新しいリソース管理の仕組みが導入されている。これは、ユーザは通常最低レベルに近い権限のみを持って振る舞い、必要なときだけ明示的により高い権限を授かるというもの。UAC のオンオフはユーザが設定できるようだが、デフォルトではオンに設定されている。まだ 正式ドキュメント の先頭数ページしか目を通していないので、誤解している部分があるかもしれない。

具体的には Vista 以前の Windows ならば、管理者として作成されたユーザアカウントでログインすれば、どんなときでも管理者権限を持って振舞うことができた。すなわち、どんなリソースでも無条件に触ることが出来た。しかし Vista では、そういうユーザでも普段は一般ユーザと同じ権限しか持っていない。必要なときには「管理者として実行...]メニューからソフトを実行するか、Manifest に権限条件を付記した UAC 対応ソフトならば、シェルがそれを認識して管理者権限を授けてくれるらしい。

普段は一般市民の姿をしているのに、いざというときにはスーパーマンに変身してパワーアップする。UAC とはそんなような仕組みを提供しているのだろう。普段から超人でいなければならないような状況ってそう多くは無い。必要なときだけ超人に変身すればよい世の中のほうが平和だろ?と言われれば、そうかもなぁと思わないでもない。

2007年11月28日

NTFS におけるファイルのアクセス権管理

開発中の Windows ソフトで任意ファイルのアクセス権を変更する処理を実装した。当初は簡単だと思っていたのだけど、実際には実装にかなり手間取った。NTFS 以降、ファイルのアクセス権はユーザごとに細かく設定できるようになっていたのをすっかり忘れていた。僕の頭の中は MS-DOS のファイルシステムの知識から発展していないということかぁ、ははは...と、笑っている場合じゃないけど。

Windows では利用者がログインすると、利用者のセキュリティ識別子(SID)を持ったアクセストークンが作成される。具体的には、ユーザSID、グループSID、プロセスオーナーSID、特権などがアクセストークンに設定されている。そして、ログインセッション中に実行されるプロセスは同じアクセストークンを持つのが決まりだ。更に、ファイルなどの「オブジェクト」はセキュリティ記述子(SD)を持っている。セキュリティ記述子には、所有者情報やアクセス権詳細(アクセスが許可された利用者の情報)が格納されている。

SD にはアクセスコントロールリスト(ACL)と呼ばれる配列状のデータ領域があり、アクセスコントロールエントリ(ACE)と呼ばれるアクセス権に関する情報が格納される。ファイルの場合には随時アクセスリスト(DACL)と呼ばれるACLに、アクセス許可情報を示す「アクセス許可ACE」とアクセス禁止を示す「アクセス禁止ACE」が格納されている。プロセスがファイルにアクセスするときには、利用者のSID、オブジェクトのSD中のSID、オブジェクトのSD中のACL内の個々のACEが比較チェックされ、アクセス可能なら処理続行、アクセス不可能なら ERROR_ACCESS_DENIED エラーが返される。

ファイルアクセス権の設定は、ファイルオブジェクトの DACL 中のエントリの更新処理に他ならない。セキュリティ関係の API を使用すれば DACL の編集操作は可能であるけれど、Windows NT 4.0 以後では DACL 中のエントリの格納順序に規則が設けられているため、DACL 中のエントリを容易に編集することができなくなっている。代わりに、新しい DACL を作成して既存 DACL の内容をコピーし、その途中で必要なエントリの追加処理を行って、新しい DACL をファイルオブジェクトにアタッチしなければならない。わかってみるとなんてことは無い処理だけど、やってみるまでは随分と難解に感じることだろう。

でも果たして OS の標準機能としてここまで細かいアクセス管理って必要なのだろうか。Unix のアクセス権でも困った覚えが無いので、あの程度でもいいじゃんと思わないでもない。

2007年11月29日

結構使える Windows ムービーメーカー

久しぶりにホームビデオを編集した。

素材はビデオカメラで撮影した映像が miniDV テープに40分、先日購入した FlipVideo で撮影した映像がパソコンのハードディスクに30分ほどあるので、必然的に編集作業はパソコンで行うことになる。Windows 2000 を使っていた頃は IEEE1394 増設ボードに付属していた Pinnacle Systems 製の StudioDV というビデオ編集ソフトを使っていたのだけど、マシンが Windows XP になって再インストールしてみると「互換性に問題があるのでソフトをアップグレードしろ」と表示されるようになった。割引するからソフトを買いなおせということらしいのだけど、あまりビデオ編集の必要も無かったのでそのまま放置状態。

さて今回どうしようかと試案したところ、そういえば Windows にもビデオ編集ソフトが付属していたっけなと思い出し、Windows ムービーメーカーなるソフトを初めて使ってみた。僕がやりたいことはクリップを切り取ってつなぎ合わせるだけで、テロップを入れたりロールやディゾルブなどの効果は必要ない。ビデオカメラ(DVCam)との互換性だけが心配だったけど、追加ドライバも必要なしに標準ビデオデバイスとして認識され、取り込みも録り戻しも問題なく機能した。予想以上に結構使えるじゃんという感じ。

編集作業を終えてから、手元に Mac mini が遊んでいることに気が付いた。iMovie だっけ、ビデオ編集ソフトもバンドルされているんだよね。せっかく買った Mac mini も開発仕事が一段落して既に用無し。何か使おうかなぁと思わないでもないけれど。

2007年11月30日

Windows Vista におけるシステムファイルの所有者

継続して Windows Vista をいじくり回している。

1つ気づいたのだけど、Windows Vista ではシステム関係のファイルの所有者はデフォルトで SYSTEM というユーザになっているようだ。手元に Windows XP Professional が無いので確かなことは言えないが、少なくとも Windows XP Home ではそういったファイルの所有者は Administrators になっている。それ故に管理者権限を持つユーザ、例えば Administrator でログインして、そのファイルのアクセス権をいかように操作したとしても、自分自身が所有者なのでアクセスを拒否されることはなかった。しかし Vista ではそうはいかない。具体的には、例えば Administrator の読み取り権限を禁止してしまうと、自身が所有者ではないため、以後そのままでは読み取り権限を復活させることはできなくなる。それを避けるためには、事前に所有者を SYSTEM から Administarators に変更しておかないとならない。

あと、最初に UAC を知ったときには単に「へぇ~」ぐらいにしか思わなかったけど、ソフト開発者としてその機能の詳細を知るにつれて、Microsoft はとんでもない仕組みを実装してくれたものだと青ざめることしかり。まあユーザ向けにはセキュリティ強化のための良い仕組みなのだろう。だけど UAC のお陰で Vista 対応に追われるソフト開発者は少なくないのではないか。僕はそんな開発者の一人である。

2007年12月01日

Windows Vista では GINA を廃止

以前に作成した Windows のログオン処理をカスタマイズするソフトをテストしようと、Windows Vista 環境にインストールし、システムを再起動してみたがログオン画面に全く変化が無い。Vista になって多少の互換性の問題があろうとも、もう少し何か起こってもいいのになぁと思いつつ、ネットで情報を探したら、なんと Windows Vista では GINA が廃止されたらしい。

Windows のログオン処理は WinLogon.exe というプログラムが制御しているが、実際にログオン、ログオフ、ワークステーションロック、アンロックなどの処理を行っているのは GINA(Graphical Identification and Authentication)という仕様に基づいて書かれた DLL である。デフォルトではマイクロソフトの標準 MSGINA.DLL が使われているが、これを置き換える(具体的にはレジストリをいじって DLL へのポインタを変更する)ことにより、ログオンなどの処理をカスタマイズすることが可能だ。GINA は Windows の様々な仕組みの中ではかなり重要度の高いメカニズムなので、Windows がアップデートされても大筋では継承されると思っていたのだけど、まさかの廃止には驚いた。今初めて知ったというのも Windows プログラミングを生業にしているものとしては恥ずかしい限りであるが。

Windows Vista では GINA に代わって Credential Provider というメカニズムが導入されたとのこと。早速時間を見つけて仕様やサンプルに目を通してみないといけないな。

About Windows

ブログ「dreamhound」のカテゴリ「Windows」に投稿されたすべてのエントリのアーカイブのページです。新しい順番に並んでいます。

前のカテゴリはVirtual Earth - 3DVIAです。

次のカテゴリは携帯電話です。

他にも多くのエントリがあります。メインページアーカイブページも見てください。

Powered by
Movable Type