• ベストアンサー

共有フォルダ名のパスの取得

お世話になります。 C++ 6.0 MFCで開発しております。 自分の共有フォルダ名から、その共有フォルダのパスを取得したいのですが それができるような関数はあるのでしょうか? 大変お手数ですが、何卒よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

> Windows98に対応していない事や 関数の定義に違いがありますが、対応していないわけではありません。 Windows95のSvrapi.dllにNetShareEnum関数があることは確認しました。 NT系と95系両方に対応するためには、ヘッダーファイルをインクルードせずに、LoadLibraryでdllファイルを読み込んで、GetProcAddressで関数のポインタを得る必要があります。使用する構造体も別途定義しなければなりません。 > LPWSTR→CStringに変換する時、なんかPC側で、似たような字に変換される可能性があるとも聞いたのです パスにUNICODEにしかない文字があれば、変換せざるを得ません。しかし、UNICODE文字列として扱わない限り、どんな方法でパスを取得しても、変換がかかるのは同じです。 他の方法として、レジストリから取得する方法もありますが、正規の方法ではないため、将来的に使えなくなる可能性があります。また、NT系と95系でレジストリの場所が違いますし、NT系の管理共有等は記述されていません。

その他の回答 (3)

回答No.3

CString strPath((LPWSTR)BufPtr->shi502_path); としたらstrPathに取り出せませんか?

kgyqk433
質問者

お礼

ご返事ありがとうございます。 CString strPath((LPWSTR)BufPtr->shi502_path); ですが、Windows98に対応していない事や、インストールの時に 必要なライブラリもいっしょにいれないといけないとお聞きしたのです。。 ※LPWSTR→CStringに変換する時、なんかPC側で、似たような字に変換される 可能性があるとも聞いたのです。。 ご返事ありがとうございます。

回答No.2

UNICODEに対応していなくても、MFC使っているならCStringにLPWSTRを渡せばいいだけだと思いますが。

kgyqk433
質問者

お礼

res = NetShareEnum (lpszServer, 502, (LPBYTE *) &BufPtr, -1, &er, &tr, &resume); のBufPtrで取得したのですが、BufPtr内のパス先・フォルダ名をデバックで中を見たらその時点で文字が化けていたのです。。。。

回答No.1

こちらのサンプルコードは確認されましたか? NetShareEnum 関数 http://msdn.microsoft.com/ja-jp/library/cc446966.aspx

kgyqk433
質問者

お礼

ご返事ありがとうございます。 実は、現在のプログラムがUNICODEに対応していなくて NetShareEnumを使うと文字化けを使わない方法で作成したのです。 その際に、共有フォルダ名までは取得できたのですが、 そのパス名の取得方法がわからないのです。 お手数ですがよろしくお願いします。

関連するQ&A