Windows Vista/7/8/8.1/10/11の
UAC対策について


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


【はじめに】

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

 具体的には、管理者権限が与えられているユーザーでも、一般ユーザーと同じく、 フォルダに対してファイルの書き込みや更新の保護を行う目的の対策が行なわれます。 この影響で、従来と同じ感覚でWindowsを利用しようとすると、どうしても自由度が拘束されてしまい、 使い方に注意を配っていないと様々なトラブルを経験することになります。 そもそもこの背景には、 XPまでの従来のアプリケーションが ユーザーに管理者権限が与えられていることを前提にしていたり、 また特に意識してこなかったことがあります。

 弊社内のVista上でのテストも、このUACの設定や性格を無視していたことによりエラーになるケースを色々と経験することになってしまいました。 これらの問題はマイクロソフトも認識していて、Windows 7以降のOSではUACの取扱を一部変更し、 警告レベルを指定できるようにしてきましたが、依然としてUACの基本的な構造はそのままです。

※マイクロソフトは、これら問題(UAC以外にも互換性の問題は多い)を回避するために、 Windows XP Mode という仮想OSもWindows 7用に無償リリースしていますが、 Windows XP Modeでの対応は本ページの対象外とさせていただきます。

 本ページは、トラブルの回避だけでなく、UACのセキュリティ思想とTRYCUTファミリーの柔軟性の双方を活かすことを目的に用意した次第です。 この内容は、TRYCUTファミリーとの連動エディタなど、 他のアプリケーションの運用時にも役立つ部分も多いと思われますので、 既にWindows Vista/7/8/8.1/10/11を導入されている方、もしくは今後導入予定の方もご一読下さい。
※本ページは、Windows Vistaがリリースされた当初に整理した内容をベースにしています。 UAC無効化の方法など一部内容が古くなってきているところもありますことをご容赦下さい。

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


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

 UACを考慮していないで、不用意な使い方をしていると、どのようなトラブルを経験するか?
例えば、TRYCUTファミリーではケースにもよりますが以下のような問題に遭遇する場合があります。

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


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

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

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


【そもそもUACとは?】

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


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

 問題を引き起こしているのは、ひとつはUACのフォルダの書き込み保護機能なのですが、 もうひとつ重要なのは、 この問題の救済策として仕組まれた32bitアプリケーション動作時のファイルとレジストリの仮想化の弊害もあることです。
 具体的な仕様として、"Program Files"下にインストールされてあっても、変更/書き込みが許されていない場合には、 新たに更新されたファイルの内容が、仮想化先のフォルダに書き込まれてしまいます。 エクスプローラ(コンピュータ)の通常設定では見つからないので、 ファイルの実体がどこに行ってしまったのか判らなくなることがあります。 これはアプリケーション側から見ても同様のことが言え、 テキストエディタとの連携機能などで弊害が出てしまいます。
 このファイルとレジストリの仮想化は、 32bitアプリケーションだけの一時的な仕様で、 マイクロソフトは将来的にはこの仕様を無くしてゆく可能性があることをアナウンスしています。 64bit(x64)アプリーケーションにはこの仕様は反映されませんので、 64bit OSで、TRYCUT3000やTRYCUT5000のx64版を利用しているときにはこの弊害は発生しません。 ただし32bitアプリケーションとの連携動作を行なうような場合にはやはり意識しておく必要があります。


仮想化先は、

 例としてCドライブにWindows Vista/7/8/8.1/10/11がインストールされている環境でユーザーが"naka"の場合。 32bit環境(OS)と64bit環境(OS)とのそれぞれにおける例として、

Vista/7/8/8.1/10(32bit)
インストール先: C:\Program Files\TRYCUT2000
      ↓
仮想化先: C:\ユーザー\naka\AppData\Local\VirtualStore\Program Files\TRYCUT2000
   
Vista/7/8/8.1/10/11(64bit)
インストール先: C:\Program Files (x86)\TRYCUT2000
      ↓
仮想化先: C:\ユーザー\naka\AppData\Local\VirtualStore\Program Files (x86)\TRYCUT2000

※日本語Windows Vista/7/8/8.1/10/11のエクスプローラでは、"C:\Users"が"C:\ユーザー"に変換されて表示されます。

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


【対応策】

 それぞれ一長一短はありますが対応策が5つほどあります。 どれを推奨するというものでもありません。ご利用の環境に合わせたもので対応して下さい。

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

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

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

2. 関連フォルダに「フル コントロール」属性を与える

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

3. UAC機能の無効化

 懸念はありますがUACを無効化すると一番副作用がなくスッキリと解決します。 せっかくのセキュリティー強化機能が活かされない状態にはなりますが、 UACの本来の目的からすると、ウィルスチェックが徹底されている環境や、 ネットワークから切り離されている場合には、やや過剰なセキュリティ機構と言えなくもありません。 マイクロソフトが「UACを無効化する機能」を用意したのも様々な環境を配慮してのことだろうと思われます。
 UAC無効化の方法は、「コントロールパネル」の「ユーザーアカウント」を開き、 Windows Vistaにおいては「ユーザーアカウント制御の有効化または無効化」という設定項目があります。 ここを開いてチェックボックスをオフにして下さい。Windows 7/8/8.1/10/11の場合は、 「ユーザーアカウント制御設定の変更」にて4段階の警告レベルの設定ができるようになっています。 (Windows10の例:「コントロールパネル」→「ユーザーアカウント」→「ユーザーアカウント」→「ユーザーアカウント制御設定の変更」) このレベルを最下位(UAC無効化と同義)にして下さい。 それぞれOSを再起動すればUACが無効化されます。
※当初(Windows7まで)は、 この方法も有効としてきましたが、最近のWindows8.x/10では完全な無効化にはレジストリ操作が必要になるなど、 推奨できなくなってきています。詳細はWindows/UAC操作の説明ページなどをご参照ください。

4. 管理者権限で起動

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

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

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

トップページへ  [応答なし]対策はこちら