Windows VistaのUAC対策について


はじめに
どんな問題に遭遇するか?
どのような時に問題に遭遇するか?
そもそもUACとは?
問題を引き起こす原因
対応策


【はじめに】

 Windows Vistaでは、新しいセキュリティ強化機能として、User Account Control(略称:UAC)がサポートされています。

 具体的には、フォルダに対してファイルの書き込みや更新の保護を行うものなの ですが、その影響でどうしても自由度が拘束されてしまい、使い方に 注意を配っていないと様々なトラブルを経験することになります。
 弊社も、TRYCUTファミリーにおいてVista上での動作確認は行ってまいりま したが、このUACの設定を無視していたことによりエラーになるケースを色々と経験することに なってしまいました。現時点では、弊社がフリーソフトとして提供しているモニタリングデータ・グラフ化ツール「TrMonirtor」も、後述の【対応策】3又は4を行なう必要があります。どうもネット上で検索しますと、他のアプリケーションでも利用者の多く がトラブルを経験しているようです。

(※このような背景もあるためかマイクロソフトは、次期Windows7にてUACの取扱を一部変更するとの 話もあります。まだ、どのような変更になるか詳細は確定はしていませんが、注視しておく必要はありそうです。)

 しかし、機能の性格さえ事前に理解しておけば、けっして難解なものでもありません。本ペー ジは、トラブルの回避だけでなく、Vistaのセキュリティ思想とTRYCUTファミリーの柔軟性の双方を 活かすことを目的に用意した次第です。この内容は、TRYCUTファミリーとの連動エディタなど、他のアプリ ケーションの運用時にも役立つ部分も多いと思われますので、Windows Vistaを導入され た方、もしくは導入予定の方もご一読下さい。

とりあえず対応策だけ見たい方はこちら


【どんな問題に遭遇するか?】

 例えば、TRYCUTでは以下のようなケースに遭遇しています。

@ DMFやDME保存で書き込みエラー(原因:UACによりDMFやDMEファイルが書き込めない)
A 帳票出力でエラー(原因:UACにより"Verify.txt"が書き込めない)
B /x6オプションでエラー(原因:UACにより"trycut.log"ファイルが書き込めない)
C 作成したはずのファイルが見つからない(原因:リダイレクションの副作用)
D 初期設定ファイルの日付けを見ると更新されていないのに参照時は更新されている(原因:リダイレクションの副作用)
etc...


【どのような時に問題に遭遇するか?】

 弊社の経験ではTRYCUTを"Program Files"下にインストールした場合にのみ、これらの問題に 遭遇しましたが、Vistaの仕様から判断するとドライブ直下(例:C:\)や"Windows"フォルダなどOSの管理下におかれているよう なフォルダにアプリケーションをインストールすると同様の問題が出るものと思われます。
 UACの初期状態では、これらのフォルダ下へのファイルの書き込みや更新に対して保護を行うため、TRYCUT稼動中の様々なファイル 操作が全て問題の対象になってしまいます。

※現状TRYCUT2000では、セットアップモジュールを強制的に管理者権限で実行しない限り、Vistaの"Program Files"下に はインストールできません。
※TRYCUT3000/5000のセットアップモジュールやアップグレードモジュールでは、初期のバージョンにおいてはインス トールフォルダの初期表示が"Program Files"下のフォルダになっていましたが、TRYCUT3000ではVersion1.60より、 同じくTRYCUT5000ではVersion1.12より、OSのインストールドライブ直下のフォルダに変更しています。


【そもそもUACとは?】

 UAC(ユーザーアカ ウント制御)は、もともとウイルスやスパイウェアなどマルウェア(悪意あるソフト)を、うっかりしたミスでインス トールしてしまうことに対抗することから生まれた保護機能です。
 新しい概念のセキュリティ機能で従来のWindowsに慣れている人ほど違和感を持ってしまう側面がありますが、 慣れれば、マルウェアが氾濫している状況の中、必要不可欠だという認識が広まるかもしれません。賛否両論もあ ったようですが、マイクロソフトが出したひとつの結論です。
 Vistaリリースに伴い様々な ページで紹介されています。その全貌を把握するためには一度Yahoo!などの検索エンジンで 検索してみて下さい。また以下 サイトなども参考になります。

Windows Vistaまるわかりガイド ユーザーアカウント制御編


【問題を引き起こす原因】

 問題を引き起こしているのは、ひとつはUACのフォルダの書き込み保護機能なのですが、 もうひとつ重要なのは、この問題の救済策として仕組まれたリダイレクション機能の弊害も あることです。
 リダイレクション機能によって"Program Files"下にインストールされてあっても、書き込みが許されていな い場合には、新たに更新されたファイルの内容が、リダイレクション先のフォルダに書き込まれてしまいます。 エクスプローラ(コンピュータ)の通常設定では見つからないので、ファイルの実体がどこに行ってしまった のか判らなくなることが あります。これはアプリケーション側から見ても同様のことが言え、テキストエディタとの連携機能などで弊害が 出てしまいます。
 なお弊社の調査では64bit(x64)アプリケーションでは、初期状態においてリダイレクション先にファイルは 書き込めないようになっているようです。

リダイレクション先は、

 例としてCドライブにVistaがインストールされている環境でユーザーが"naka"の場合

インストール先: C:\Program Files\TRYCUT5000
      ↓
リダイレクション先: C:\ユーザー\naka\AppData\Local\VirtualStore\Program Files\TRYCUT5000
   
インストール先: C:\Program Files (x86)\TRYCUT5000
      ↓
リダイレクション先: C:\ユーザー\naka\AppData\Local\VirtualStore\Program Files (x86)\TRYCUT5000

※日本語Windows Vistaのエクスプローラでは、"C:\Users"が"C:\ユーザー"に変換されて表示されるようです。

 リダイレクションのフォルダ(AppData以下)は、エクスプローラ(コンピュータ)の通常設定では参照できません。「すべてのファイルとフォ ルダを表示する」の設定にして下さい。
 設定方法は、「エクスプローラ」にて"Alt"キーを押して表示されたポップアップメニューの 「ツール(T)」→「フォルダオプション(O)」→「表示」タブにて「すべてのファイルとフォルダを表示する」に チェックを入れて「適用」して下さい。


【対応策】

 それぞれ一長一短はありますが対応策が5つほどあります。どれを推奨するというものでもありません。ご利用の環境に 合わせたもので対応して下さい。
※ここでまとめているものは、あくまでも現時点のWindows VistaとTRYCUTファミリーの仕様を前提に した対応策で、今後マイクロソフトが何らかのインターフェイスを公開したり、OS側の仕様変更により、対策の 必要がなくなったり最適な対応策が変わる場合もあります。

1. "Program Files"下にインストールしない

 Windows Vistaのセキュリティー思想とTRYCUTファミリーの柔軟性の双方を、活かした状態にするには"Program Files"下への インストールを行わないで、ドライブ直下のフォルダ(例: C:\TRYCUT5000)などにインストールすることをお薦めします。これ だけで問題は一掃されます。
 そもそも"Program Files"はマイクロソフトがアプリケーションのインストール先として推奨しているだけで、従来から 制約を受けていたわけではありません。Vistaでもこの点に関しては自由度があります。
 また、TRYCUTファミリーは全て初期設定ファイルの考え方や、起動オプションによる ひとつのコマンドとしての利用など、様々な環境で柔軟に利用できるように進化してきたツールです。固定さ れた"Program Files"下にだけ存在させる意義は特にありません。
 また些細なことですが、ドライブ直下のフォルダなどにインス トールした方が、コマンドラインの作業では、"cd"コマンドの作業フォルダ変更も楽だというメリットもあります。

※以下の2〜5の対応策は、どうしても"Program Files"下にインストールしたい方向けのものです。

2. 関連フォルダに書き込み属性を与える

 インストールしたフォルダや、関連作業フォルダ全てに、ユーザーの書き込み属性を与えることに より、問題なく使えるようになります。
 書き込み属性を与える方法は、インストール先など関連するフォルダを、右クリックして「プロパティ」の 「セキュリティ」タブの編集でUsersを選択し、「書き込み」の許可にチェックを入れて「適用」を すれば属性の更新が行われます。
 この方法で注意を払わなくてはいけないのは、書き込み属性を与えても、この設定前にリダイレク ション先に作成されたファイルが存在すると、アプリケーション側から見て、そのファイルを優先して参照して しまうという仕様になっているようで、実体がどこに行ってしまったのか混乱を招く場合があります。
 書き込み属性をインストール直後から与えている場合は問題ありませ んが、途中から与えた場合には、必ずリダイレクション先のファイル群をインストー ル先にコピーして、リダイレクション先のフォルダは削除しておいて下さい。これを忘れると いつまでもトラブルを引きずることになります。この点だけ配慮するならば、この方法がベストかもしれません。

3. UAC機能の無効化

 懸念はありますがUACを無効化すると一番副作用がなくスッキリと解決します。せっかくのVistaのセキュリティー機能が 活かされない状態にはなりますが、UACの本来の目的からすると、ウィルスチェックが徹底されている環境や、ネット ワークから切り離されている場合には、やや過剰なセキュリティ機構と言えなくもありません。マイクロソフトが「UACを 無効化する機能」を用意したのも様々な環境を配慮してのことだろうと思われます。
 UAC無効化の方法は、「コントロールパネル」の「ユーザーアカウント」を 開き、「ユーザーアカウント制御の有効化または無効化」という設定項目があります。ここを開い てチェックボックスをオフにしてOS(Vista)を再起動すればUACが無効化されます。

4. 管理者権限で起動

 TRYCUTファミリー起動時に「管理者権限で実行」を行います。毎回起動時に確認ダイアログが出てきて面倒ですが それ以外は特に問題はありません。
 一番の問題は管理者権限にするのを忘れてしまった場合ですが、ショート カットに「管理者権限で実行」のチェック入れておけば忘れることはありません。また、管理者権限で起動した場合 には、リダイレクション先のファイル群は見えなくなるので関連ファイルが2重になってしまうことによる弊害は起き ません。
 ただし、この方法は、セキュリティー上は一番良くても、確認ダイアログの問題は避けられず起動オプションを 利用したバッチファイルからの連続実行など使いにくくなる面もあります。

5. 作業フォルダを作成する

 "Program Files"下のインストールフォルダを作業フォルダにしないで、インストール後に関連ファイルをコピーし てドライブ直下などに別途作業フォルダを作成します。この場合、TRYCUT3000や5000ではインストーラーが自動生成する ショートカットをそのままでは利用できません。
 もともとTRYCUTファミリーの各実行モジュールは、適用NCマシンごとに作業フォルダを 用意して利用できるように柔軟な仕様にしてきた経緯があります。この考え方で運用する ならば、自ずと問題が解決されてゆきます。

トップページへ