■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#38987-0ネットワーク上におけるマシン名の取得についてアイドル天使ようこそようこ2001-02-16(金) 16:49
     #38992-0RE#38987:ネットワーク上におけるマシン名の取得についてどうにも2001-02-16(金) 18:34
     #39004-0RE#38992:ネットワーク上におけるマシン名の取得についてアイドル天使ようこそようこ2001-02-16(金) 20:30
#38987-0
ネットワーク上におけるマシン名の取得について
こんにちわ。はじめて投稿します。よろしくお願いします。

題名のように、ネットワーク上におけるマシン名、そしてネットワークドライブ名を取得して、
ローカルのパスをネットワークパスに変換したく考えております。

そこで、WinAPIを調べてみると、WNetGetUniversalNameというのがありました。
しかし、うまく使えなくて困ってます。

また、このAPIはWinNTのみ使えるみたいなことも書かれているものもありまして、
Win95でも使えるか心配でもあります。
(MSのHPでは大丈夫なように書かれているのですが)
http://www.microsoft.com/JAPAN/developer/library/jpntwkpf/_win32_wnetgetuniversalname.htm

このWNetGetUniversalNameというAPIをVBで使用されている方、
よろしければ使い方をお教え下さい。
#38992-0
RE#38987:ネットワーク上におけるマシン名の取得について
> こんにちわ。はじめて投稿します。よろしくお願いします。
> 
> 題名のように、ネットワーク上におけるマシン名、そしてネットワークドライブ名を取得して、
> ローカルのパスをネットワークパスに変換したく考えております。
> 
> そこで、WinAPIを調べてみると、WNetGetUniversalNameというのがありました。
> しかし、うまく使えなくて困ってます。
> 
> また、このAPIはWinNTのみ使えるみたいなことも書かれているものもありまして、
> Win95でも使えるか心配でもあります。
> (MSのHPでは大丈夫なように書かれているのですが)
> http://www.microsoft.com/JAPAN/developer/library/jpntwkpf/_win32_wnetgetuniversalname.htm
> 
> このWNetGetUniversalNameというAPIをVBで使用されている方、
> よろしければ使い方をお教え下さい。

標準モジュール
Public Const NO_ERROR = 0

Public Const UNIVERSAL_NAME_INFO_LEVEL = &H1&
Public Const REMOTE_NAME_INFO_LEVEL = &H2&

Public Type UNIVERSAL_NAME_INFO
    lpUniversalName     As String * 256
End Type
Public Type REMOTE_NAME_INFO
    lpUniversalName     As String * 256
    lpConnectionName    As String * 256
    lpRemainingPath     As String * 256
End Type
Public Declare Function WNetGetUniversalName Lib "mpr" Alias "WNetGetUniversalNameA" _
(ByVal lpLocalPath As String, ByVal dwInfoLevel As Long, lpBuffer As Any, _
lpBufferSize As Long) As Long

フォームへ
Private Sub Form_Load()
    Dim uncInfo As UNIVERSAL_NAME_INFO
    Dim bufSize As Long
    Dim strBuf  As String
    Dim rc1     As Long
    
    uncInfo.lpUniversalName = Chr(0)
    bufSize = Len(uncInfo)
    rc1 = WNetGetUniversalName("E:\hogehoge.txt", UNIVERSAL_NAME_INFO_LEVEL, uncInfo, bufSize)
    If rc1 = NO_ERROR Then
        strBuf = Mid(uncInfo.lpUniversalName, 4)
        strBuf = Left(strBuf, InStr(strBuf, Chr(0)) - 1)
        Debug.Print strBuf
    End If
End Sub

使い方が正しいかどうかは解りませんが、これで意図している結果が得られました。
ちなみに私はNT4です。
#39004-0
RE#38992:ネットワーク上におけるマシン名の取得について
どうにもさま、回答ありがとうございます。

ところで、Win98・VB5SP3でも正常に動作しました。
ありがとうございました。

しかし、このWNetGetUniversalNameは、端的に言えば、
ネットワークドライブをローカルドライブに割り当てた場合に、
そのローカルドライブを元のネットワークドライブとして表示する際に使うAPIなのですね。
自分が勘違いしてました。

私が知りたいのは、元々ローカルなドライブをネットワーク上で表示するようにするAPIなんです。
C:\windows\autoexec.bat → \\ABC\C\windows\autoexec.bat
といった感じです。

どうにもさま、ほんとすみませんでした。
また、ご存知の方がおられれば、お教え頂けると大変幸いです。
このページと関連する記事:
#577-2フォルダ選択ダイアログの表示2003-08-26(火) 19:13
#27146-0他のマシンへの接続2002-02-26(火) 12:17
#43931-0Windowsが日本語版か英語版か取得したい2001-06-11(月) 20:47
#8481-0ファイルの有無を調べるには2000-03-12(日) 13:50
#40116-0NT でユーザー定義の用紙サイズをプログラム上で設定する2001-03-10(土) 15:30
#38269-0SendMessageとWM_KEYDOWNの使い方・・・2001-02-05(月) 21:03
#7497-0フォルダを指定するダイアログボックス1999-10-16(土) 21:03
#26611-0Environを使用してデスクトップのパスを取得できますか。2000-07-26(水) 19:17
#650-0kernel32を使用した時の文字列の長さ2002-05-01(水) 16:43
#27846-0とも2000-08-11(金) 17:09
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)