• ベストアンサー

LAN内に設置されているコンピュータ名を

LAN内に設置されているコンピュータ名を VB2005で作成したアプリ内で表示する必要があります。 コマンドプロンプトの [NET VIEW]コマンドと同等の処理を行うとすれば どのようにコーディングしていけば良いでしょうか?

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

昔、VBScriptでやってたヤツを編集し直してみました。 '**** ネットワークに接続しているマシン名を取得 **** Function GetNodes() As List(Of String)     Const ssfNETWORK As Integer = &H12     Dim A, B, C     Dim R As List(Of String) = New List(Of String)     GetNodes = R     C = GetMyWorkGroup()     A = CreateObject("Shell.Application")     A = FindFolder("ネットワーク全体", A.Namespace(ssfNETWORK))     If A Is Nothing Then Exit Function     A = FindFolder("Microsoft Windows Network", A.GetFolder())     If A Is Nothing Then Exit Function     '★もし、ワークグループに関わらず取得する場合は以下を工夫する     A = FindFolder(C, A.GetFolder())     If A Is Nothing Then Exit Sub     A = A.GetFolder().Items()     For Each B In A         R.Add(B.Name)     Next     GetNodes = R End Function '**** フォルダ集団から指定の名前を持つオブジェクトを返す *** Function FindFolder(ByVal Name, ByVal Folder)     Dim A     FindFolder = Nothing     Name = Name.ToUpper()     For Each A In Folder.Items()         If A.Name.ToUpper = Name Then             FindFolder = A             Exit For         End If     Next End Function '**** 自身のワークグループを取得 **** Function GetMyWorkGroup() As String     Dim A, B     GetMyWorkGroup = ""     A = CreateObject("WbemScripting.SWbemLocator")     A = A.ConnectServer()     A = A.ExecQuery("SELECT Domain FROM Win32_ComputerSystem")     For Each B In A         GetMyWorkGroup = B.Domain     Next End Function

darlinr
質問者

お礼

なんと!サンプルまで頂きまして、ありがとうございます! 頂いたサンプルに少しコードを足して、 望み通りの結果が得れました! ありがとうございました!

darlinr
質問者

補足

VB2005で新規プロジェクトを作成して、フォームにボタンとリストボックスを貼り付けて・・・ Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sList As List(Of String) Dim i As Integer = 0 sList = GetNodes() ListBox1.Items.Clear() For i = 0 To sList.Count - 1 ListBox1.Items.Add(sList(i)) Next End Sub '**** ネットワークに接続しているマシン名を取得 **** Function GetNodes() As List(Of String) Const ssfNETWORK As Integer = &H12 Dim A, B, C Dim R As List(Of String) = New List(Of String) GetNodes = R C = GetMyWorkGroup() A = CreateObject("Shell.Application") A = FindFolder("ネットワーク全体", A.Namespace(ssfNETWORK)) If A Is Nothing Then Exit Function A = FindFolder("Microsoft Windows Network", A.GetFolder()) If A Is Nothing Then Exit Function '★もし、ワークグループに関わらず取得する場合は以下を工夫する A = FindFolder(C, A.GetFolder()) If A Is Nothing Then Exit Function A = A.GetFolder().Items() For Each B In A R.Add(B.Name) Next GetNodes = R End Function '**** フォルダ集団から指定の名前を持つオブジェクトを返す *** Function FindFolder(ByVal Name, ByVal Folder) Dim A FindFolder = Nothing Name = Name.ToUpper() For Each A In Folder.Items() If A.Name.ToUpper = Name Then FindFolder = A Exit For End If Next End Function '**** 自身のワークグループを取得 **** Function GetMyWorkGroup() As String Dim A, B GetMyWorkGroup = "" A = CreateObject("WbemScripting.SWbemLocator") A = A.ConnectServer() A = A.ExecQuery("SELECT Domain FROM Win32_ComputerSystem") For Each B In A GetMyWorkGroup = B.Domain Next End Function End Class

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

NET VIEWをcmd.exeで実行して結果を%TEMP%に書き出す。

darlinr
質問者

お礼

質問を書きながら、仰るとおりの事で問題ない気がしてました。 しかしながら、もう少し便利なロジックがあるかもと期待して質問して見ました。 ありがとうございました!

関連するQ&A

  • VBでネットワーク上のコンピュータ名をチェック

    ある コンピュータ名を持つコンピュータがネットワークに繋がっているかどうかを調べて 返すということをしたいのですが… 例えば テキストボックスtext1 に"CP1"と入力して コマンドボタンを押すと、ネットワーク上でCP1 が認識できたら OKとメッセージ表示、できなかったらNOとメッセージ表示と。 NET VIEW などのコマンドを使えばよいのでしょうか。

  • net userコマンドでコンピュータ名(NetBIOS名)を指定して

    net userコマンドでコンピュータ名(NetBIOS名)を指定してユーザーアカウントを作成する方法はありませんか? Windows Vistaの管理者権限を持つアカウントのパスワードを忘れてしまい、インストールDVDのコマンドプロンプトからnet userコマンドを使って新たに管理者権限を持つユーザーを作成しようと思ったのですが、作成しても再起動すると消えてしまいます。 操作対象を\\から\\hogehogeに変更してnet userを実行する方法はないでしょうか?

  • 自分のコンピュータ名を知りたい

    調べてみると、 「スタート」⇒「コントロールパネル」で「システム」をダブルクリックして「コンピュータ名」 と書いてあったのですが、 それのどれでしょうか。フルコンピュータ名というものでしょうか。 そこには漢字で部署名が書かれているのですが、 コマンドプロンプトで「ping」を調べたいとき、 英語しか打てませんでした。 読み方を英語で打てばいいのでしょうか。 教えてください。

  • ストアドでコンピュータ名の取得

    題記の通り、SqlServer2000のストアド内にてクライアント(呼出側)のコンピュータ名、ログイン名を取得することは可能なのでしょうか?発行アプリはVb.Net2003です。 どなたかご教授お願い致します。

  • Win7でコンピュータ名変更を自動で

    windows 7 のコンピュータ名を割り当てたいのですが、 台数が100台ほどあるため、自動化の方法を考えています。 クローニングによりイメージコピーされたホスト名を個別に変更するための 方法として考えているため、すべての処理を自動で行う必要があります。 (ボタンのクリックなどは難しい) コンピュータ名の候補はMACアドレスから自動的に生成できたのですが、 変更がうまく行きません。 vbs で記述していたのですが、プロンプトから実行すると次の処理でret に 0が戻ります。 (手写したので、typo があれば無視してください) Set objWMI = GetObject("Winmgmts:root\cimv2") For Each objPC in objWMI.InstancesOf("Win32_ComputerSystem") ret = objPC.rename("test2", "passwd", "uid") Next uid は管理者権限の ログインID で、passwd はそのパスワードです。 なお、管理者権限のコマンドプロンプトを開いて実行すると、正しく動作しました。 利用する言語は、WSH をと考えていますが、C#, VB, C++ であれば、何でもOKです。 ヒントだけでも構いませんので、アドバイスをお願い致します。

  • コマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法

    ipアドレスは分かっていますがコンピュータ名が分かりません。リモート接続ソフトなどは使えないので、それでコンピュータ名を調べることはできません。 コマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法を教えてください!

  • ipアドレスからmacのコンピュータ名を調べる方法

    ipアドレスからネットワーク上の macのコンピュータ名を調べる方法を探しています。 使うツールはターミナル(mac)やコマンドプロンプト(windows)を 想定しています。 --- windowsの場合、 【ipアドレスから(winの)コンピュータ名を調べる方法】は nbtstat -A 192.168.1.5 などだと思います。 またアクティブディレクトリ環境などの場合 nslookupコマンドで調べることが出来ると思います。 ただ、macのコンピュータ名を調べる場合は どんなコマンドがあるのでしょうか? nslookupでは調べられませんでした。 Finderの左ペインにネットワーク上のコンピュータ名は 表示されますが、ipアドレスが分からないので突き合わせが 出来ません。 *想定としては同一ネットワークアドレス環境で考えています。 宜しくお願いします

    • ベストアンサー
    • Mac
  • コマンドプロンプトを使用してIPアドレスからコンピュータ名を調べたい

    コマンドプロンプトを使用して IPアドレスからコンピュータ名を調べたいです。 ただし同じドメイン内の端末で、他の端末から調べることは可能でしょうか? どなたかそのコマンドを知っていたら教えて下さい。 nslookupでコンピュータ名からIPアドレスを調べる事はわかりましたが その逆をやってみたいのです。 よろしくお願いいたします。

  • LAN内のコンピューターのログインユーザーを調べるコマンド

    お世話になります。 Windowsコマンドプロンプトで、 ネットワーク内の各コンピューターへ ログイン中のユーザーを表示するコメントはありますでしょうか? ご教授よろしくお願いします。 ※検索してみましたが、見当たらず

  • 他のコンピュータが見えません

    WINDOWS98を利用しています。(4台) ネットワークコンピュータを開いても、他のコンピュータはまったく見えません。しかし、デスクトップ上に残しておいた他のパソコンの共有フォルダへのショートカットは問題なく使用できます。 昨日までは問題なく動作していましたが、今朝から4台とも同一現象です。 インターネットも問題なく接続できます。 IPアドレスはルーターから自動取得にしており、winipcfgなどからも、IPアドレスの更新なども行いました。 また、コマンドプロンプトより、net view などを試したところ、「エラー6118、このワークグループでリソースを共有しているコンピュータが見つかりません。コンピュータは再起動されているかもしれません・・」とのメッセージが表示されてしまいます。 この現象を回避するにはどうしたらよいでしょうか?

専門家に質問してみよう