none
UAC確認ダイアログを出さない方法は RRS feed

  • 質問

  •  

    Program Filesフォルダにアプリケーションを配置した場合、UACが壁として立ちはだかるため配布プログラムの実行権限が管理者レベルに昇格していない場合、フォルダやファイルの作成が拒否されてしまいます。解決策としてマニフェストファイルを追加して管理者レベルに昇格させますが、この方法だと必ずアプリケーション起動時に「ユーザーアカウント制御」ダイアログが表示されます。このまま実行ファイルだけを他のフォルダに移動させて起動してもこのダイアログは表示されてしまいます。

     

    お伺いしたいのは、このダイアログを出さない方法はないでしょうか。


    また、UAC自体がユーザに確認を求める機能なのでその目的上出さざるを得ないのでしょうがアプリケーションでファイルの作成等を行うのはざらにあることなのに大変不自由に感じています。みなさんはどのような方法でこの問題を回避しているのでしょうか。やはり、Program Filesフォルダ以外にインストールするしかないのでしょうか。

    2008年10月23日 12:01

回答

  • UACの確認DLGを出さないという観点からは外れますが、"ファイルの作成場所"という観点からして、以下の内容というのはご存知でしょうか?

     

    @IT:.NET TIPS アプリケーション設定情報はどこに保存すべきか? - C# VB.NET
    http://www.atmarkit.co.jp/fdotnet/dotnettips/263apppath/apppath.html

     

    Application.CommonAppDataPathとか、Application.UserAppDataPathの辺りを、私はよく使います。

     

    あとは、ちょっと私は使ったことがないのですが、こういったものがうまく活用できるケースにgirouさんの

    アプリケーションが該当するかもしれませんので、一応紹介します。

     

    分離ストレージを活用するには?[C#、VB] - @IT
    http://www.atmarkit.co.jp/fdotnet/dotnettips/578isolatedstorage/isolatedstorage.html

    2008年10月23日 13:16
  •  girou さんからの引用

    Program Filesフォルダにアプリケーションを配置した場合、UACが壁として立ちはだかるため配布プログラムの実行権限が管理者レベルに昇格していない場合、フォルダやファイルの作成が拒否されてしまいます。

    設定情報を書き込むファイルであれば、アプリケーションと同じフォルダに書き込まないようにしましょう。

    アプリケーションと同じフォルダに書き込むと、同じPCの違うユーザアカウントでログオンしたときに同じ設定ファイルが使用されてしまいますので。

     

     girou さんからの引用

    解決策としてマニフェストファイルを追加して管理者レベルに昇格させますが、この方法だと必ずアプリケーション起動時に「ユーザーアカウント制御」ダイアログが表示されます。このまま実行ファイルだけを他のフォルダに移動させて起動してもこのダイアログは表示されてしまいます。

     

    お伺いしたいのは、このダイアログを出さない方法はないでしょうか。

    ありません。

    ユーザ自身がUACを無効化しない限り、基本的には昇格ダイアログは省略できません。

     

     girou さんからの引用

    また、UAC自体がユーザに確認を求める機能なのでその目的上出さざるを得ないのでしょうがアプリケーションでファイルの作成等を行うのはざらにあることなのに大変不自由に感じています。

    Program Files以下に書き込むことが「ざらにある」のですか?

    その「ざらにあること」次第で対応方法が変わります。

     

    設定ファイルの類であれば、前述の通り、書くべき場所を改めましょう。

    アプリケーションのデータファイル等をオンラインアップデートする必要があるのであれば、アップデート部分を切り離して管理者特権で実行する、データファイルだけをProgram Filesではない特定のパスに用意する等でしょうか。

    Program Files以下のファイルを編集するユーティリティであれば、最初から管理者特権を要求して然るべきでしょう。

    2008年10月23日 14:46
    モデレータ

すべての返信

  • UACの確認DLGを出さないという観点からは外れますが、"ファイルの作成場所"という観点からして、以下の内容というのはご存知でしょうか?

     

    @IT:.NET TIPS アプリケーション設定情報はどこに保存すべきか? - C# VB.NET
    http://www.atmarkit.co.jp/fdotnet/dotnettips/263apppath/apppath.html

     

    Application.CommonAppDataPathとか、Application.UserAppDataPathの辺りを、私はよく使います。

     

    あとは、ちょっと私は使ったことがないのですが、こういったものがうまく活用できるケースにgirouさんの

    アプリケーションが該当するかもしれませんので、一応紹介します。

     

    分離ストレージを活用するには?[C#、VB] - @IT
    http://www.atmarkit.co.jp/fdotnet/dotnettips/578isolatedstorage/isolatedstorage.html

    2008年10月23日 13:16
  •  girou さんからの引用

    Program Filesフォルダにアプリケーションを配置した場合、UACが壁として立ちはだかるため配布プログラムの実行権限が管理者レベルに昇格していない場合、フォルダやファイルの作成が拒否されてしまいます。

    設定情報を書き込むファイルであれば、アプリケーションと同じフォルダに書き込まないようにしましょう。

    アプリケーションと同じフォルダに書き込むと、同じPCの違うユーザアカウントでログオンしたときに同じ設定ファイルが使用されてしまいますので。

     

     girou さんからの引用

    解決策としてマニフェストファイルを追加して管理者レベルに昇格させますが、この方法だと必ずアプリケーション起動時に「ユーザーアカウント制御」ダイアログが表示されます。このまま実行ファイルだけを他のフォルダに移動させて起動してもこのダイアログは表示されてしまいます。

     

    お伺いしたいのは、このダイアログを出さない方法はないでしょうか。

    ありません。

    ユーザ自身がUACを無効化しない限り、基本的には昇格ダイアログは省略できません。

     

     girou さんからの引用

    また、UAC自体がユーザに確認を求める機能なのでその目的上出さざるを得ないのでしょうがアプリケーションでファイルの作成等を行うのはざらにあることなのに大変不自由に感じています。

    Program Files以下に書き込むことが「ざらにある」のですか?

    その「ざらにあること」次第で対応方法が変わります。

     

    設定ファイルの類であれば、前述の通り、書くべき場所を改めましょう。

    アプリケーションのデータファイル等をオンラインアップデートする必要があるのであれば、アップデート部分を切り離して管理者特権で実行する、データファイルだけをProgram Filesではない特定のパスに用意する等でしょうか。

    Program Files以下のファイルを編集するユーティリティであれば、最初から管理者特権を要求して然るべきでしょう。

    2008年10月23日 14:46
    モデレータ
  • CrimsonPorkさん、Azuleanさんご回答大変ありがとうございました。PCの調子が悪くて再インストールしていて返事が遅れて申し訳ありませんでした。(この関係でサイインがgirou2となっています)

     

    実は、設定ファイルではなくて、アプリの動作で必要なファイルだったのですが、ご指摘のように他のフォルダーに設定することで上手く動作させることができました。大変お手数をおかけいたしました。ありがとうございました。

    2008年10月25日 0:36
  • girou さん、

     

    こんにちは!

    フォーラム オペレーターの服部 清次です。

    今回、CrimsonPork さんと Azulean さんの回答が参考になったようですので、こちらの情報を他の方々に共有していただくためにも、私の方で回答チェックを付けさせていただきました。

     

    また何か質問や疑問がありましたら、MSDN Forum をご利用ください。

    これからも、どうぞよろしくお願いします。

    それでは、また!

     

    _____________________________________________

    マイクロソフト株式会社 フォーラム オペレータ 服部 清次

    2008年10月31日 9:15