none
C++でのwindows10のファイルの存在確認方法について RRS feed

  • 質問

  • PathFileExistsでファイルの存在確認をしようとしたところ、

    おなじバイナリで実行しても、

    windows7では正常に動作しますが、

    windows10ではファイルがあるのに FALSEが帰ってきてしまいます。

    確認につかったコードは下記です。

    MessageBox(NULL, (PathFileExists("d:\\test.ini") ? "TRUE" : "FALSE"), "bool", MB_OK);

    ビルド環境 : windows7 , visual studio 2013

    実行環境 : windows10 IoT Enterprise 2016 LTSB

    windows10でファイルの存在確認する方法を教えて頂けませんか

    2019年8月30日 7:38

回答

  • エラーの通り、存在しないのでは? D:\ はローカルディスクですか? 例えばネットワークドライブで、ドライブを割り当てたアカウントとプログラムを実行しているアカウントが異なっていたりしませんか?
    • 回答としてマーク lga_im 2019年9月2日 2:09
    2019年9月2日 1:51

すべての返信

  • PathFileExistsWは失敗時の原因をGetLastErrorで報告します。どのようなエラーになっていますでしょうか? そこに原因があり、解決策が見つかるかもしれません。
    2019年8月30日 9:35
  • 返信ありがとうございます。

    GetLastErrorの応答はWin10では「指定されたファイルがみつかりません」

    同じ構成でWin7では「この操作を正しく終了しました」となりました。

    PathFileExists("d:\\test.ini") の記述を

    PathFileExists(TEXT("d:\\test.ini"))

    としても結果は同じでした。32BitWin7でビルドしたバイナリを64bitWin10で実行していることが要因だったりするのでしょうか?。

    2019年9月2日 1:14
  • エラーの通り、存在しないのでは? D:\ はローカルディスクですか? 例えばネットワークドライブで、ドライブを割り当てたアカウントとプログラムを実行しているアカウントが異なっていたりしませんか?
    • 回答としてマーク lga_im 2019年9月2日 2:09
    2019年9月2日 1:51
  • ご回答ありがとうございます。

    ターゲットの端末(Win10)では、「登録されている拡張子は表示しない」設定になっており、

    ビルドとテストのPC(Win7)では、この設定がオフになっていました。

    エクスプローラでは同じに見えたのですが、

    実際のファイル名は ターゲットのWin10では、xxxx.ini.ini と Win7 PCではxxxx.ini

    となっており、ご指摘どおり、「ファイルが存在しません」でした。

    当方の不注意でお手数おかけいたしまして申し訳ありませんでした。 

    2019年9月2日 2:17