- ベストアンサー
共有フォルダ名のパスの取得
お世話になります。 C++ 6.0 MFCで開発しております。 自分の共有フォルダ名から、その共有フォルダのパスを取得したいのですが それができるような関数はあるのでしょうか? 大変お手数ですが、何卒よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> Windows98に対応していない事や 関数の定義に違いがありますが、対応していないわけではありません。 Windows95のSvrapi.dllにNetShareEnum関数があることは確認しました。 NT系と95系両方に対応するためには、ヘッダーファイルをインクルードせずに、LoadLibraryでdllファイルを読み込んで、GetProcAddressで関数のポインタを得る必要があります。使用する構造体も別途定義しなければなりません。 > LPWSTR→CStringに変換する時、なんかPC側で、似たような字に変換される可能性があるとも聞いたのです パスにUNICODEにしかない文字があれば、変換せざるを得ません。しかし、UNICODE文字列として扱わない限り、どんな方法でパスを取得しても、変換がかかるのは同じです。 他の方法として、レジストリから取得する方法もありますが、正規の方法ではないため、将来的に使えなくなる可能性があります。また、NT系と95系でレジストリの場所が違いますし、NT系の管理共有等は記述されていません。
その他の回答 (3)
- m-take0220
- ベストアンサー率60% (477/782)
CString strPath((LPWSTR)BufPtr->shi502_path); としたらstrPathに取り出せませんか?
- m-take0220
- ベストアンサー率60% (477/782)
UNICODEに対応していなくても、MFC使っているならCStringにLPWSTRを渡せばいいだけだと思いますが。
お礼
res = NetShareEnum (lpszServer, 502, (LPBYTE *) &BufPtr, -1, &er, &tr, &resume); のBufPtrで取得したのですが、BufPtr内のパス先・フォルダ名をデバックで中を見たらその時点で文字が化けていたのです。。。。
- m-take0220
- ベストアンサー率60% (477/782)
こちらのサンプルコードは確認されましたか? NetShareEnum 関数 http://msdn.microsoft.com/ja-jp/library/cc446966.aspx
お礼
ご返事ありがとうございます。 実は、現在のプログラムがUNICODEに対応していなくて NetShareEnumを使うと文字化けを使わない方法で作成したのです。 その際に、共有フォルダ名までは取得できたのですが、 そのパス名の取得方法がわからないのです。 お手数ですがよろしくお願いします。
お礼
ご返事ありがとうございます。 CString strPath((LPWSTR)BufPtr->shi502_path); ですが、Windows98に対応していない事や、インストールの時に 必要なライブラリもいっしょにいれないといけないとお聞きしたのです。。 ※LPWSTR→CStringに変換する時、なんかPC側で、似たような字に変換される 可能性があるとも聞いたのです。。 ご返事ありがとうございます。