※ ChatGPTを利用し、要約された質問です(原文:ディレクトリ/ファイル リストの作成)
ディレクトリ/ファイル リストの作成方法と共有フォルダの一覧取得について
このQ&Aのポイント
WindowsにおいてFindFirstFileEx()関数を用いて、ディレクトリやファイルのリストを作成する方法について説明します。
ローカルディスクにおけるリスト作成には問題ありませんが、ネットワークパスの指定に注意が必要です。
ネットワークパスでのリスト作成では、コンピュータ名だけを指定する形式では失敗することがあります。共有フォルダの一覧を取得する方法について解説します。
WindowsにおいてFindFirstFileEx()関数を用いて、ディレクトリや
ファイルのリストを作成しています。
1.ローカルディスクについては全く問題ありません。
2.ネットワークパスについて:
a.ネットワークパス:
\\kako\public\*
も問題なくデータを取得できます。
b.ところが、ネットワークパス:
\\kako\*
の形式(コンピュータ名だけを指定。)は必ず失敗します。
複数のリモートマシンに対しても試してみましたが、コンピュー
タ名だけの指定では必ず関数は失敗してしまいます。どうやら"
共有フォルダ"の先頭ディレクトリのみ特別な処理が必要なのか
と思われます。
共有フォルダの一覧リストを作成するにはどうしたらよいので
しょうか?
お礼
Wr5様、たいへん長らくお付き合いいただいてありがとうございました。 私は今までコンパイル環境に Windows7 64bit VC++6 を使っていたのですが、同じコードを WindowsXP 32bit VC++6 環境に移したところ全く異なるエラーが発生するようになりました。 それは: ERROR_NO_UNICODE_TRANSLATION 0x00000459 です。 このエラーはMultiByteToWideChar()などのコード変換関数が出しているようなので、ご指摘のようにこの問題の原因は『文字コード』にありそうです。 ところで、私はWindowsの文字コードが全く判りません。 LPCTSTR、LPTSTR、LPSTR、LPCSTR、などといわれても、意味も使い方も全く判りません。 そこで、これを機会に少し勉強させていただき、その上で結果をご報告させていただきます。
補足
リモートマシンの文字列"\\\\kako"を明確にUnicodeに変換したところ、うまく関数を実行できるようになりました。