none
Vistaのユーザーアカウント制御に対応したい(.NetFramework2.0・ClickOnce) RRS feed

  • 質問

  • お世話になります。

     

    現在.NetFramework2.0でWindowsFormの形態でアプリを作成しています。その中で、CSVファイル出力機能を自前で作成しました。XPでは問題なく動くのですが、Vistaで動かそうとすると、Vistaユーザーアカウント制御 機能でCドライブ直下や、ProgramFilesなどにファイル出力しようとすると、自動的にバーチャルストアの方に書き込まれ、書き込みメソッドの戻り値としては「書き込み正常終了」となってしまい、処理結果の判別に困っています。

     

    普通にEXEをローカルにコピーしてきて、「管理者権限で動作させる」にチェックを入れて動作させると、このユーザアカウント制御が有効でもちゃんとCドライブ直下/ProgramFiles配下にファイル出力できます。ただ、今回はClickOnceで配布することになっていまして、この「管理者権限で動作させる」チェックを入れることができるか(または代替手段)がわからず困っています。 どなたか、Vistaでのセキュリティ機能強化に対応する方法をご存知の方がいらっしゃいましたらご助言いただけませんでしょうか。

    よろしくお願い致します。

    ※長文となってしまい恐縮です。

    2007年7月25日 8:59

回答

  • ユーザーアカウント制御 (UAC) は ClickOnce の機能ではなく Vista OS 側の実装です。なので、UAC 制御を緩めるとしたら、OS 側の制御を緩めるほうがいいかと思います。

     

    けど、ClickOnce は個々のユーザーに対応した複層構成アプリのクライアントとして動作することを期待されている (要するにあまり管理っぽい作業をすることを想定していない) ので、その設計思想から考えると、ユーザー利用の枠を超えた作業 (C:\ 直下や Program Files 直下 の書き換え) を行うことは、あまり望ましいとは思えません。My Document 以下については、ありかと思います。

     

    そういう管理者っぽいことをしたい場合は、Windows インストーラを使って EXE をインストールして、管理者が明示的に実行したほうがいいのではないでしょうか。

    • 回答としてマーク まみや 2009年3月23日 7:51
    2007年8月11日 13:32

すべての返信

  • 出力先を変更してやることが Vista 対応です。

    User に選択させているなら、user を教育しましょう。

     

    そのために管理者で動作させるなんて言語道断です。

     

    2007年7月25日 9:12
  • ちなみに仮想化された方に書かれるから成功したかどうかわからないんであって、manifestでasInvokerを指定して確実に失敗するようにしましょう。
    2007年7月25日 12:59
  • ユーザーアカウント制御 (UAC) は ClickOnce の機能ではなく Vista OS 側の実装です。なので、UAC 制御を緩めるとしたら、OS 側の制御を緩めるほうがいいかと思います。

     

    けど、ClickOnce は個々のユーザーに対応した複層構成アプリのクライアントとして動作することを期待されている (要するにあまり管理っぽい作業をすることを想定していない) ので、その設計思想から考えると、ユーザー利用の枠を超えた作業 (C:\ 直下や Program Files 直下 の書き換え) を行うことは、あまり望ましいとは思えません。My Document 以下については、ありかと思います。

     

    そういう管理者っぽいことをしたい場合は、Windows インストーラを使って EXE をインストールして、管理者が明示的に実行したほうがいいのではないでしょうか。

    • 回答としてマーク まみや 2009年3月23日 7:51
    2007年8月11日 13:32