2017-08-06 7 views
-1

私は最近、起動時にユーザー設定を保存するいくつかのファイルを読み込み、プログラムが実行されたときにユーザーが設定したオプションファイルを作成します。私はVisual Studioでそれをデバッグしているとき、期待どおりに動作します。起動時にアプリケーションを起動するときにファイルを読む

インストールのセットアップを手続きしたので、Inno Setupを使用しました。私のプログラムは起動時に再起動するようになっているので、次のコードを使用します。これはinnoのWebサイトhttp://www.jrsoftware.org/iskb.php?startwithwindowsからです。私の問題は、プログラムが起動時にこれらのファイルが読み込まれたり作成されたりしないことです。プログラムを閉じてデスクトップアイコンを使用してプログラムを起動すると、ファイルが読み込まれて作成されます。

私の質問は、ファイルを読むことができるInnoスクリプトには何かがありますか? fstreamクラスに問題がありますか?コード解決策がありますか

ありがとうございます。

マイケルのアドバイスに従って、私はAPPDATAフォルダをローミングサブフォルダで使用しましたが、プログラムは設定ファイルを読み込んで、期待通りに実行しました。

+0

コードソリューション?コードに問題がありますか?それともコードに問題がありますか?あなたのC++アプリケーションで何をしているのかについてもっと詳しく説明してください。 –

+1

あなたはどのディレクトリにファイルを書き込もうとしていますか?アプリケーションは、実行時にファイル/ディレクトリに対する適切な権限を持っていますか? –

+1

相対パスを使用している場合は、現在の作業ディレクトリが正しいことを確認してください。 –

答えて

1

上記のコメントから、設定ファイルを.exeと同じフォルダに保存すると、アプリケーションはVisual Studioから実行するとファイルを作成できますが、 "Program Files x86)」フォルダまたはC:/ root。

UAC(User Access Control)アクセス許可の問題が発生しているようです。少なくとも "Program Files(x86)"フォルダ、そして私はC:/(root)も、管理者権限を必要とすると信じています。これはWindows XP以前のケースでは当てはまりませんでした。それは現代版である。 Visual Studioを管理者として実行していて、インストール時に管理者権限を許可しているかもしれませんが、アプリケーションは管理者として実行されないため、その場所に書き込めません。

(インストールされた)アプリケーションを管理者として実行してください(ファイルを右クリックし、[管理者として実行]を選択してください)。それが動作すれば、あなたは行く:あなたはそれが.exeと同じディレクトリに構成ファイルを格納できるようにするには、常に管理者として実行する必要があります。アプリケーションを実行しているユーザーが管理者権限なしで常に書き込みできる%APPDATA%の適切な名前のサブディレクトリです。

+0

おそらく、Visual Studioが管理者として実行されているのではなく、プログラムがデスクトップから実行されているときに動作するため、マニフェストにrequireAdministratorオプションが設定されているとします。 IIRCでは、プログラムがRunキーまたはStartupフォルダ経由で起動されると、requireAdministratorオプションは暗黙のうちに無視されます。あなたが言うように、解決策は、ファイルを実行可能ファイルの隣に格納しないことです。シナリオによっては、ProgramDataフォルダ(別名グローバルアプリケーションデータフォルダ、CommonAppDataFolder)がユーザーのアプリケーションデータフォルダよりも賢明かもしれません –

関連する問題