none
VB2008 Windows7 で、ファイルの作成が出来ない RRS feed

  • 質問

  • はじめまして、よろしくお願い致します。

    今まではVB6.0で作成してました。VB6.0で作成したソフト、中であるファイルがない時は作成し、ある時は内容を変更するところがありますが、WindowsXPでは問題なく、Windows7で実行した場合も、 "ドライブ名:\ユーザー\(ユーザー名)\AppData\Local\VirtualStore\Program Files\ソフトのインストールされているフォルダー名" にファイルが作成され、うまく動作します。最近、VisualStudio2008に変えて、VBで同じ動作をするソフトを作成しました。やはり、WindowsXPでは問題なく動作します。(ソフトと同じフォルダーにファイルが作成される)でもWindows7で実行すると、作成しようとしているファイル、または変更しようとしているファイルにアクセスできないような旨のメッセージが出て、うまく動作しません。

    2010年7月12日 22:45

回答

  • その不具合を追求してもいいのかもしれませんが、
    VirtualStore が出てくるということは
    そもそも仕様に問題がある気がします。

    適切なフォルダーを利用するように仕様変更できるなら
    不具合も無くなるでしょうし、あとあとメンテナンスが楽になると思います。

    • 回答の候補に設定 山本春海 2010年7月20日 8:17
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 1:24
  • 確認ですが、使用しているWindows 7は64bit版ですか?

    anningoさんも指摘していますが、Program Files配下に書き込みを行うという仕様そのものを見直すべきです。

    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 1:30
  • VB2008で作り直したということは、.NET Framework を利用しているということでしょうか?

    であれば、Program Files 配下に書き込みできないのは実行環境の仕様だと思います(内部的にマニフェストが強制されていたはず)。

     


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 2:33
  • Windows 7 で動かない理由や仕様変更をすべき理由については、以下をご参考に。

     ユーザー アカウント制御 (UAC: User Account Control) - Windows 7 対応アプリケーションの互換性
     http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx

     Windows Vista または Windows 7 のファイルおよびレジストリの仮想化に関する一般的な問題
     http://support.microsoft.com/kb/927387/ja
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 2:38
  • VB2008 ではマニフェストが標準でつきます。
    これにより、VirtualStore、過去のアプリケーションの互換性のために用意されたリダイレクトの仕組みは動作しなくなります。

    Vista が出た後に作られたアプリケーション(=実行者権限を指定したマニフェストがある)では必要がないと判断されているからこのような動作になります。
    基本的には、ほかの皆さんが書かれているように、ユーザーのデータ領域を読み書きするように仕様を見直すことが回答になります。


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

すべての返信

  • その不具合を追求してもいいのかもしれませんが、
    VirtualStore が出てくるということは
    そもそも仕様に問題がある気がします。

    適切なフォルダーを利用するように仕様変更できるなら
    不具合も無くなるでしょうし、あとあとメンテナンスが楽になると思います。

    • 回答の候補に設定 山本春海 2010年7月20日 8:17
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 1:24
  • 確認ですが、使用しているWindows 7は64bit版ですか?

    anningoさんも指摘していますが、Program Files配下に書き込みを行うという仕様そのものを見直すべきです。

    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 1:30
  • VB2008で作り直したということは、.NET Framework を利用しているということでしょうか?

    であれば、Program Files 配下に書き込みできないのは実行環境の仕様だと思います(内部的にマニフェストが強制されていたはず)。

     


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 2:33
  • Windows 7 で動かない理由や仕様変更をすべき理由については、以下をご参考に。

     ユーザー アカウント制御 (UAC: User Account Control) - Windows 7 対応アプリケーションの互換性
     http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx

     Windows Vista または Windows 7 のファイルおよびレジストリの仮想化に関する一般的な問題
     http://support.microsoft.com/kb/927387/ja
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 2:38
  • VB2008 ではマニフェストが標準でつきます。
    これにより、VirtualStore、過去のアプリケーションの互換性のために用意されたリダイレクトの仕組みは動作しなくなります。

    Vista が出た後に作られたアプリケーション(=実行者権限を指定したマニフェストがある)では必要がないと判断されているからこのような動作になります。
    基本的には、ほかの皆さんが書かれているように、ユーザーのデータ領域を読み書きするように仕様を見直すことが回答になります。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2010年7月26日 7:44
    2010年7月13日 13:39
    モデレータ
  • こんにちは、fewwit さん。

    フォーラム オペレーターの山本です。
    その後いかがでしょうか。みなさんからのアドバイスは確認されましたか?もし、まだ解決されていないようでしたら、不明点などについて質問を続けてくださいね。

    返信くださったみなさん、情報ありがとうございます。
    みなさんからの情報は、解決に役立つ有効な情報かと思われますので、私のほうで勝手ながら回答としてマークさせていただきました。
    有効な情報には、回答としてマークすることで、今後同じ問題でこのスレッドを参照される方の目にとまりやすくなるかと思いますので、有効な情報に回答としてマークすることをお願いしています。
    fewwit さん、お時間のある時にでもその後の状況をお知らせくださいね。お待ちしています。それでは。
                                             
    マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2010年7月26日 7:44