- ベストアンサー
.netFrameworkを利用したフォームアプリケーションの起動に関する問題
- フォームアプリケーションの起動に関する問題とは?インストーラを作成せずに配布する方法がある?
- config.cfgの読み込み方法についての質問です。
- .netFrameworkをインストールしていないマシンで起動できない問題について解決策を知りたい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
実行して正しく動作させるには、以下の条件が必要です。 条件1:ランタイムライブラリがインストールされていること。 条件2:実行時、アプリのインストール先のフォルダにアクセス権があること。 >ビルドしてReleaseフォルダ内に出来るapp.exeを起動すれば普通に読み込むことが出来ています。 コンパイル出来る環境ならランタイムライブラリがインストールされているので、条件1をクリアしています。 コンパイルした後のReleaseフォルダは、現在ログインしているユーザー用の個人用フォルダ(Vistaの場合C:\Users\ユーザ名\Local Settings\~~)の下にある筈なので、条件2をクリアしています。 なので、この状態で起動すれば正常に動作します。 >.netFrameworkのインストールされていないマシンを使用している知人に動かしてもらったところ ランタイムライブラリが未インストールなので条件1をクリアしていません。 なので、この状態では起動さえしません。 >今度は自宅のVistaでインストールして動かしてみると、「パス'[config.cfgへのパス]'へのアクセスが拒否されました」と出ます。 インストーラーを作成してインストールすると、通常、アプリケーションは「C:\Program Files\の下」にインストールされます。 UACがオンの状態では C:\Program Files\app\ は C:\Users\ユーザー名\AppData\Local\VirtualStore\Program Files\app\ にリダイレクトされます。 C:\Users\ユーザー名\AppData\Local\VirtualStore\Program Files\app\ にはmsgと言うフォルダはありませんから、当然、ここにアクセスすると「パス'[config.cfgへのパス]'へのアクセスが拒否されました」になります。 また、ここにmsgというフォルダがあってconfig.cfgがあったとしても、ログインし直してユーザーを変えてしまうと「異なるconfig.cfgをアクセスする」ので、ユーザーごとにコンフィグ内容が違ってしまいます。 UACをオフにすれば C:\Program Files\app\ は C:\Program Files\app\ のままで C:\Program Files\app\msg\ にconfig.cfgも存在するのですが、ここは一般ユーザーにはアクセス出来ませんので「パス'[config.cfgへのパス]'へのアクセスが拒否されました」になります。 そういう訳で 「VISTA用のアプリを作成する場合、アプリが存在するフォルダ以下に書き込みをする場合は、マニフェストを埋め込むなどでコンピューターの管理者権限で実行し、システムフォルダにアクセスする権限を得て、かつ、UACのリダイレクトを回避するなどしてUACがオンでもオフでも同じ動作をする」 と言う対処をしなければなりません。
お礼
ありがとうございます。無事解決することが出来ました。 おかげさまで何とか完成できそうです。