- PR -

UAC 時代のプログラム配布術

1
投稿者投稿内容
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2007-02-27 14:31
 ユーザーに最新の業務プログラム(exe)を配信する方法として、XCOPY を利用してきました。
 ファイルサーバーで公開している特定の場所に最新 exeを配置しておき、クライアント側からは XCOPY /D で取得してそのあとで本体の exe を起動させるというものです。
 クライアント側の exe を配置してある場所(XCOPYによって差し替えられる可能性のあるフォルダ)に対して変更権限を付与して使ってました。

 このようなアプリを Vista で評価していますが、UAC が有効の場合は案の定失敗します。
・XCOPY でプログラムが差し変わらない
・バッチファイル内で本体 EXE を呼び出す際に、警告ダイアログが表示される

 警告ダイアログについては、電子署名を加えることでメッセージ内容が多少和らいだ表現になりますが、ダイアログ自体が表示されることに変わりはありません。

 まぁ XCOPY で最新取得という手法自体、時代遅れも甚だしいのは分かりますが、このような運用形態のシステムを Vista で動作させる場合には、UAC を無効にする以外に方法はないものでしょうか?

 UAC 自体に対しては有効性を感じていますので無効にするっていうのは Vista の目的を半分捨てるようなものと感じてます。 
 「一定の操作に限り無効」ということができればいいのですが、そんな都合のよいことはできないですよね?

 ちなみに、ユーザーに更新操作を意識させることは避けたいです。
(知らないうちにPGが更新されている方が望ましい)


# Insider.NET に相応しいか迷いましたが、.NET なアプリでも XCOPY で配布されていた方も多いのではないかと思い、こちらに投稿させて頂きました
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-02-27 15:42
引用:

こばさんさんの書き込み (2007-02-27 14:31) より:

・XCOPY でプログラムが差し変わらない
・バッチファイル内で本体 EXE を呼び出す際に、警告ダイアログが表示される


この問題ですが、前者の問題(差し替えできない)と後者の問題(実行時に昇格が要求される?)は別の問題となります。

前者の問題は、通常ユーザー(XPまでの制限ユーザーに相当。ローカルマシンのUsersグループに所属するアカウント権限)で制約なく読み書きできるフォルダをインストール先にすることで対応できると思います。

こちらは、XP でも同様で、制限ユーザーで問題なく利用できるように構成を作っておけば、ユーザーアカウントの権限やOSのバージョン違いの影響を受けることなく作成することができます。


問題は後者の方で、署名をつけることで出てくるダイアログが変わるということからUACの昇格ダイアログではないかと推察します。
もしそうだとした場合ですが、こちらについての対応は、manifest で昇格をしないと明示的に宣言する以外には対応方法はありません。
ただし、その場合昇格せずに利用することになるためアカウントが管理者権限を持つアカウントであったとしても、通常ユーザーとして動作することになります。
そのため、状況によっては、動作しないなどは出る可能性がありますのでその点は注意が必要と思います。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2007-02-27 16:24
 ちなみに、ローカルマシン内で Administrators に属するユーザーであっても、両方の問題を回避できていません。

 XCOPY が記述され、ショートカットからの直接な実行対象であるバッチファイルが、ログオンしているユーザーよりも低い権限で実行されるために、ファイル(exe)の書き込みが失敗し、本体の exe を起動する際には、実際のログオンユーザーにて昇格実行されるため、確認ダイアログが出ているのかなぁ〜と推測してます。

 まぁ、ユーザーに暗黙のうちに exe を差し替えるという行為自体が、マルウェアそのものと言っても過言じゃないので、UAC の理念から反しているのは理解してますが。。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-02-27 16:53
脱線ごめんなさいm(__)m

引用:

// Microsoft MVP for Windows-SDK (Oct 2005 - Sept 2007)



// Microsoft MVP for Windows-SDK (Oct 2006 - Sep 2007)
じゃないかなと思ったり 


[ メッセージ編集済み 編集者: NAO 編集日時 2007-02-27 17:20 ]
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-02-27 17:21
---脱線中---
// Microsoft MVP for Windows-SDK (Oct 2005 - Sep 2007)
でもいいそうです。
過去の経緯も含めて出すのと、その年だけ出すのとでどちらを選ぶかは個人の自由だとw
もちろん、コンピ(for XXX の部分)が変わった場合はその限りではありませんがww<もともとおいらの本当のコンピは今は亡き WindowsInstaller だしww
--
さて本題w

私のコメントは言葉を選んで、管理者とかは一切付けずに書いているのですが気がつきませんでしたか?

UAC が有効な場合、管理者権限を持つアカウント(初期状態で無効化されている Administorator アカウントを除く)であっても、昇格しない限り(ユーザーに本当に管理者権限で動いても問題ないか?と問いなさない限り)、本物の管理者権限は付与されません。

これについては http://www.microsoft.com/japan/msdn/windowsvista/compatibility/default.aspx にある Webcast などをご覧いただく方が言葉で説明するよりもずっとわかりやすいと思いますのでご参照いただければと思います。

UACについてはかなり分かりやすく説明されています(もちろんそれがすべてではないわけですがw)。これを見て置くだけでもある程度以上のレベルでどうするべきということがわかりますので、かなり見方が変わると思いますよ。

Webcast を全部見ると一日かかるので、かいつまんででもいいですが、Vista 対応を検討しているのであれば、できれば一度は全部視聴することをお勧めします。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2007-02-27 17:39
セットアップの方法にもよると思いますが、
Trusted Installersグループが絡んでいるような気がします。
AdministratorsのXCOPYで失敗、となるとこのあたりで少々気になりますね。

もともとの業務APのセットアップ方法はどのようなものなのでしょうか。

外していたら申し訳ないです。
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2007-02-27 18:14
>もともとの業務APのセットアップ方法はどのようなものなのでしょうか
 
 今回評価してますのは、VB6 のセットアップウィザードで作成したものです。
 自動作成ショートカットでは exe を直接叩かずに XCOPY の含まれたバッチファイルを叩くようにしてあります。


 と書いてて申し訳ないですが、ユーザーを Administrators に入れたり外したり、プロファイルを消したり、グループポリシーの適用を再度調べたり諸々、きちんと記録せずに試行錯誤を繰り返したのが良くないのですが、結果として UAC を有効にしたままで、目的の動作になるようになってしまいました。

 少なくとも最初のうちは、確かに UAC の介入を防げなかったのですが・・・

 私の UAC に対する不勉強があるかもしれません。
 もう少し整理してから、続報を書き込みさせて頂こうと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-27 19:43
出遅れた
コピー後に起動するアプリで、昇格ダイアログがでる、というところが気になりました。
マニフェストで指定するか、インストーラ検出機能が検出しない限り、出ることはないと思う。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)