プロが教えるわが家の防犯対策術!

お世話になります。

C++ 6.0 MFCで開発しております。

自分の共有フォルダ名から、その共有フォルダのパスを取得したいのですが
それができるような関数はあるのでしょうか?

大変お手数ですが、何卒よろしくお願いします。

A 回答 (4件)

> Windows98に対応していない事や



関数の定義に違いがありますが、対応していないわけではありません。
Windows95のSvrapi.dllにNetShareEnum関数があることは確認しました。
NT系と95系両方に対応するためには、ヘッダーファイルをインクルードせずに、LoadLibraryでdllファイルを読み込んで、GetProcAddressで関数のポインタを得る必要があります。使用する構造体も別途定義しなければなりません。

> LPWSTR→CStringに変換する時、なんかPC側で、似たような字に変換される可能性があるとも聞いたのです

パスにUNICODEにしかない文字があれば、変換せざるを得ません。しかし、UNICODE文字列として扱わない限り、どんな方法でパスを取得しても、変換がかかるのは同じです。


他の方法として、レジストリから取得する方法もありますが、正規の方法ではないため、将来的に使えなくなる可能性があります。また、NT系と95系でレジストリの場所が違いますし、NT系の管理共有等は記述されていません。
    • good
    • 0

CString strPath((LPWSTR)BufPtr->shi502_path);



としたらstrPathに取り出せませんか?
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

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

ご返事ありがとうございます。

お礼日時:2009/09/17 20:12

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

    • good
    • 0
この回答へのお礼

res = NetShareEnum (lpszServer, 502, (LPBYTE *) &BufPtr, -1, &er, &tr, &resume);

のBufPtrで取得したのですが、BufPtr内のパス先・フォルダ名をデバックで中を見たらその時点で文字が化けていたのです。。。。

お礼日時:2009/09/17 15:43

こちらのサンプルコードは確認されましたか?



NetShareEnum 関数
http://msdn.microsoft.com/ja-jp/library/cc446966 …
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

実は、現在のプログラムがUNICODEに対応していなくて
NetShareEnumを使うと文字化けを使わない方法で作成したのです。

その際に、共有フォルダ名までは取得できたのですが、
そのパス名の取得方法がわからないのです。

お手数ですがよろしくお願いします。

お礼日時:2009/09/17 11:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!