
WindowsにおいてFindFirstFileEx()関数を用いて、ディレクトリや
ファイルのリストを作成しています。
1.ローカルディスクについては全く問題ありません。
2.ネットワークパスについて:
a.ネットワークパス:
\\kako\public\*
も問題なくデータを取得できます。
b.ところが、ネットワークパス:
\\kako\*
の形式(コンピュータ名だけを指定。)は必ず失敗します。
複数のリモートマシンに対しても試してみましたが、コンピュー
タ名だけの指定では必ず関数は失敗してしまいます。どうやら"
共有フォルダ"の先頭ディレクトリのみ特別な処理が必要なのか
と思われます。
共有フォルダの一覧リストを作成するにはどうしたらよいので
しょうか?
No.3ベストアンサー
- 回答日時:
>私はコンパイラをVC++ 6 を使っておりますが
どうなんですかねぇ……。
一応、その頃からこのAPIは使用可能だったハズですが……。
ただ、LPTSTRがどの型になるのか?は確認された方がいいでしょう。
「マルチバイト文字セット」にした時にはNetShareEnum()の第1引数がLPWSTRではない。と怒られましたけど。<VS2005にて
# 「UNICODE文字セット」である必要がある……ということになります。
# MSDNのページにあるサンプルでも「#define UNICODE」でUNICODE文字セットに設定しているので、LPTSTRはLPWSTRとなります。
LPWSTRで渡す必要があるようですのでMBCSの文字列をUNICODE文字列に変換する必要があるかも知れません。
# 実行環境がWin9Xとかならchar *なのでそのままでも問題ないハズですが……。
Wr5様、たいへん長らくお付き合いいただいてありがとうございました。
私は今までコンパイル環境に Windows7 64bit VC++6 を使っていたのですが、同じコードを WindowsXP 32bit VC++6 環境に移したところ全く異なるエラーが発生するようになりました。
それは:
ERROR_NO_UNICODE_TRANSLATION 0x00000459
です。
このエラーはMultiByteToWideChar()などのコード変換関数が出しているようなので、ご指摘のようにこの問題の原因は『文字コード』にありそうです。
ところで、私はWindowsの文字コードが全く判りません。
LPCTSTR、LPTSTR、LPSTR、LPCSTR、などといわれても、意味も使い方も全く判りません。
そこで、これを機会に少し勉強させていただき、その上で結果をご報告させていただきます。
No.2
- 回答日時:
>となってしまいます。
>何が悪いのでしょうか?
デバッグで追ってみると判るかと思われますが…
>LPTSTR lpszServer = (LPTSTR) "\\\\kako"; // Buffer;
が化けてます。
MBCSな文字列を無理矢理TSTRにキャストしますので、UNICODE版では狂ってしまいます。
LPTSTR lpszServer = _T("\\\\kako");
とするべきかと。
>while ( ret == ERROR_MORE_DATA );
セミコロンは間違い…ですよね?
PSHARE_INFO_502 Buf, pt;
NET_API_STATUS ret;
LPTSTR lpszServer = _T("\\\\kako"); // Buffer;
DWORD Num = 0 ,tr = 0,resume = 0, i;
do {
ret = NetShareEnum(lpszServer, 502, (LPBYTE *)&Buf, -1, &Num, &tr, &resume);
if (ret == ERROR_SUCCESS || ret == ERROR_MORE_DATA) {
for(i = 0, pt = Buf; i < tr; i++, pt++) {
OutputDebugString(pt->shi502_netname);
OutputDebugString(_T("\n"));
}
}
NetApiBufferFree(Buf);
} while(ret == ERROR_MORE_DATA);
ってところですかね。
添付いただいたコードをそっくりコピペして実行してみましたが現象に変わりはありません。
1.LPTSTR lpszServer = (LPTSTR) "\\\\kako";
私の環境ではもともとデバッガ上で文字化けすることはありませんでした。
今はご指摘のとおり"_T(...)"に変更しました。
2.セミコロンは間違い…ですよね?
はい。
私が例題をupする際に間違えたようです。ご指摘のとおり、";" は "{" です。
3.インフォメーションレベルを 0, 1, 2, 502, と試してみましたが変わりありません。
4.コンパイル時には lm.h 及び Netapi32.lib を使用しています。
私はコンパイラをVC++ 6 を使っておりますが、こんなものを使っているのが悪いのでしょうかね?
No.1
- 回答日時:
>共有フォルダの一覧リストを作成するにはどうしたらよいので
>しょうか?
使ったことはありませんが…NetShareEnum()でしょうかね。
http://msdn.microsoft.com/ja-jp/library/cc446966 …
http://eternalwindows.jp/security/share/share03. …
とか。
この回答への補足
サンプルコードを探して、以下のコードを実行してみましたがうまくいきません。
PSHARE_INFO_502 Buf, pt;
NET_API_STATUS ret;
LPTSTR lpszServer = (LPTSTR) "\\\\kako"; // Buffer;
DWORD Num = 0 ,tr = 0,resume = 0, i;
ret = ERROR_MORE_DATA;
while ( ret == ERROR_MORE_DATA );
ret = NetShareEnum ( lpszServer, 502, (LPBYTE *) &Buf, -1, &Num, &tr, &resume );
if ( ret == ERROR_SUCCESS || ret == ERROR_MORE_DATA ) {
pt = Buf;
| | | |
}
}
NetApiBufferFree ( Buf );
lpszServerに試してみたのは:
\\kako
\\kako\
\\kako\public
\\kako\public\
などですが、いずれの場合もret値は:
53: ERROR_BAD_NETPATH(ネットワークパスが見つからない。)
となってしまいます。
何が悪いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Windows 10 コマンドプロンプトの使い方 1 2022/10/13 14:43
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPでputすると空ファイルが出...
-
絶対パスの絶対て英語で何でし...
-
「UNCパスはサポートされません...
-
どんなプログラムを書いても指...
-
ネットワーク上のコンピュータ...
-
エクセルVBAで相対パスでファイ...
-
フルパスから最後のディレクト...
-
windows.hがincludeされない
-
ExcelVBAでカレントディレクト...
-
GetPrivateProfileStringでini...
-
ファイルやディレクトリの存在...
-
webアプリケーションでの画像フ...
-
ファイルダイアログのカレント...
-
セルに入力されたパスでフォル...
-
C#でカレントディレクトリの取...
-
SSI #include virtual="~"
-
圧縮(Zip)について
-
ファイルが開かない
-
VB.NETでWebアプリを作成後に、...
-
フォルダ名をだすには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
FTPでputすると空ファイルが出...
-
ファイルやディレクトリの存在...
-
ExcelVBAでカレントディレクト...
-
絶対パスの絶対て英語で何でし...
-
「UNCパスはサポートされません...
-
fopenで別ディレクトリにファイ...
-
webアプリケーションでの画像フ...
-
ネットワーク上のコンピュータ...
-
C言語を用いたファイルの一括削...
-
windows.hがincludeされない
-
マイクラでPythonのプログラミ...
-
ExcelVBA サーバーの(共有フォ...
-
セルに入力されたパスでフォル...
-
ファイルダイアログのカレント...
-
エクセルVBAで相対パスでファイ...
-
FTPでリモートのファイル一覧取得
-
GetPrivateProfileStringでini...
-
Ubuntu テキストファイルをどこ...
おすすめ情報