none
Visual Studio 2010 FileOpen関数でエラーが出る。 RRS feed

  • 質問

  • メニューの「デバッグ」→「デバッグなしで開始」で正常に実行することを確認した後、セットアップに進みました。メニューの「プロジェクト」で「インストール」しショートカットから実行しました。ところがFileOpen関数で「ファイルへのアクセスが拒否され」てしまいます。CドライブのPrograme Fillesの指定したフォルダにはFileOpen対象のファイルは存在します。ファイルが壊れたのかと思いプロジェクトのフォルダ内のReleaseフォルダにあるファイルをコピーしてPrograme Fillesにあるアプリケーションのフォルダに上書きしましたが、同じエラーが出ます。その他いろいろ試してみましたが解決できずにいます。きわめて単純なエラーですがそれだけに対処ができずにいます。

    言語はVisual Basic、OSはWindows 7です。

    2011年9月15日 9:16

回答

  • >CドライブのPrograme Fillesの指定したフォルダにはFileOpen対象のファイルは存在します。

    一般ユーザ権限による Program Files 配下のフォルダへの書き込みは推奨されていません。

     

    • 回答としてマーク HY1007 2011年9月15日 23:41
    2011年9月15日 11:00

すべての返信

  • >CドライブのPrograme Fillesの指定したフォルダにはFileOpen対象のファイルは存在します。

    一般ユーザ権限による Program Files 配下のフォルダへの書き込みは推奨されていません。

     

    • 回答としてマーク HY1007 2011年9月15日 23:41
    2011年9月15日 11:00
  • ありがとうございます。

    「Documentsホルダ」のファイルを読み取るようにするとOpenしてくれます。

    しかし大量のデータを使用するのでやむなくファイルにデータを入れて読み取ることにしたわけです。これをすべてForm**.vbのファイルに書き込むとなると、とても困難なことになります。何かよい方法は無いものか、もしアイデアがあれば教えてください。今回開発中のものの元になったいる、一世代前までのプロジェクトはエラー無くOpenし、データを読み取っています。今回それに機能を追加したわけですが、初めてエラーとなりました。

    2011年9月15日 15:01
  • 読み取り専用で開くことを実現すれば、Program Files にあっても読み込めます。

    FileOpen 関数をどのように使っているのかわかりませんが、今使っている引数が読み書き両用なので拒否されるのでしょう。
    読み取り専用のモードを指定するか、FileStream など別のやり方を検討してください。

    なお、Program Files 以下に管理者グループのユーザーアカウントでも書き込めなくなったのは、Vista 以降です。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年9月15日 15:22
    モデレータ
  • ありがとうございます。

    ファイルは指定なしで開いています。一世代前のものは正常に開いているので以下の方法で進めようと思います。

    Visual Studio のセットアップ用「ファイルシステム」でインストール先をドライブCのルートディレクトリ(C\)に指定したところ、インストールしたアプリケーションは動くようになりました。

    2011年9月15日 23:47
  • Visual Studio のセットアップ用「ファイルシステム」でインストール先をドライブCのルートディレクトリ(C\)に指定したところ、インストールしたアプリケーションは動くようになりました。

    確かに動くでしょうけれど、単なる回避(逃げ)であることをお忘れなく。。。
    どちらかというと恥ずかしい対処方法なので、どういうやり方が正攻法か、今後調べてください。

    # Program Files にインストールするように変更されたら動かないと言うことになるので。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年9月16日 14:35
    モデレータ