none
ネットワーク間のドライブ情報取得。 RRS feed

  • 質問

  • こんにちは。

    ネットワーク間のドライブ情報の取得について教えてもらいたいです。

    VS2003を使用しています。

    自分のPCから他PCへアクセスした際、「\\コンピュータ名\フォルダ名\ファイル名」と出ると思いますが、
    この情報を元にこのフォルダ・ファイルがどこのドライブに属しているか調べれる方法を知っている方はいらっしゃいませんか?

    それでそのドライブのファイルシステムの種類を知りたいのですが・・・・。

    2009年4月23日 8:55

回答

  • ホスト側にログインしているユーザーアカウントは関係なく、あくまでもクライアント側でログオンしているアカウントがサーバー側で度の権利を持っているかになります。

    これはVBScriptなので、拡張子VBSのファイルで保存すれば実行できます。一度試してみてください。
    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
    • 回答としてマーク sk7474 2009年5月11日 9:35
    2009年4月24日 15:35
  • うーん、共有からだとちょっと難しいかもしれないですね。ネットワーク共有しているホスト側にも管理者権限のあるアカウントを使っている場合(Active DirectoryのDomain Adminとか)、WMIを使えば共有とディレクトリのマッピングが取得できますので、それではだめでしょうか?
    http://msdn.microsoft.com/en-us/library/aa394436(VS.85).aspx

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colShares = objWMIService.ExecQuery _
     ("SELECT * FROM Win32_Share")
    For Each objShare in colShares
     Set colAssociations = objWMIService.ExecQuery _
     ("ASSOCIATORS OF {Win32_Share.Name='" & objShare.Name & "'} " _
     & " WHERE AssocClass=Win32_ShareToDirectory")
     For Each objFolder in colAssociations
     Wscript.Echo objShare.Name & vbTab & objFolder.Name
     Next
    Next
    出典:http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_pkgn.mspx?mfr=true
    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
    • 回答としてマーク sk7474 2009年5月11日 9:35
    2009年4月23日 16:37

すべての返信

  • うーん、共有からだとちょっと難しいかもしれないですね。ネットワーク共有しているホスト側にも管理者権限のあるアカウントを使っている場合(Active DirectoryのDomain Adminとか)、WMIを使えば共有とディレクトリのマッピングが取得できますので、それではだめでしょうか?
    http://msdn.microsoft.com/en-us/library/aa394436(VS.85).aspx

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colShares = objWMIService.ExecQuery _
     ("SELECT * FROM Win32_Share")
    For Each objShare in colShares
     Set colAssociations = objWMIService.ExecQuery _
     ("ASSOCIATORS OF {Win32_Share.Name='" & objShare.Name & "'} " _
     & " WHERE AssocClass=Win32_ShareToDirectory")
     For Each objFolder in colAssociations
     Wscript.Echo objShare.Name & vbTab & objFolder.Name
     Next
    Next
    出典:http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_pkgn.mspx?mfr=true
    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
    • 回答としてマーク sk7474 2009年5月11日 9:35
    2009年4月23日 16:37
  • KKamegawa

    コメントしてくださり、ありがとうございます。

    ネットワーク共有しているホスト側にはたぶん別のアカウントを使っていると思うので・・・。

    やっぱり無理でしょうかねぇ。

    • 編集済み dog.life 2009年4月26日 23:59
    2009年4月24日 6:19
  • ホスト側にログインしているユーザーアカウントは関係なく、あくまでもクライアント側でログオンしているアカウントがサーバー側で度の権利を持っているかになります。

    これはVBScriptなので、拡張子VBSのファイルで保存すれば実行できます。一度試してみてください。
    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
    • 回答としてマーク sk7474 2009年5月11日 9:35
    2009年4月24日 15:35
  • こんにちは。中川俊輔です。

    KKamegawaさん、サンプルコードを投稿してくださり、ありがとうございます。

    dog.lifeさん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?KKamegawaさんが投稿してくださった方法はうまくいきましたか?

    有用な情報と思われたため、勝手ながらKKamegawaさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年5月11日 9:38