DOBON.NET DOBON.NETプログラミング掲示板過去ログ

接続者の取得

  • 題名: 接続者の取得
  • 著者: ベルグ
  • 日時: 2005/03/25 13:51:27
  • ID: 10091
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[C#]
分類:[.NET]

いつもお世話になっています。
別のパソコンから共有ファイル等に接続してきているパソコンの情報を取得したいのですが、何か方法はないでしょうか?
■No10091に返信(ベルグさんの記事)
> いつもお世話になっています。
> 別のパソコンから共有ファイル等に接続してきているパソコンの情報を取得したいのですが、何か方法はないでしょうか?

WMIを使ってはいかがでしょうか?
ご返答ありがとうございます。

WMIというのを全く知らなかったのですが、検索して下記のようなページを見つけました。

http://wmifun.atinfinity.net/wmisample/win32_serverconnection.html

VBのコードみたいですが、このページに
「共有フォルダのセッションを取得するサンプルです。Win32_ServerConnectionクラス を使用します。」
とWin32_ServerConnectionクラスを使用すると書いてあるのですがこれは
ビジュアルスタジオ.NETのソフトでもあるのでしょうか?

まだ試してはいないので、これから試して見たいと思います。
ビジュアルスタジオのヘルプで色々さがしては見たのですが結局分からない状態です。

WMIというのを色々調べてVBスクリプトでやってみようと思いVB6.0のランタイム
とWMI SDKとインストールしてみてもうまくできなくて迷っています。

Windows98なので書いてる設定方法も違って全く分かりません。

できるだけビジュアルスタジオ.NetのC#言語で作りたいのですが
何か方法はないのでしょうか?

まだまだプログラミングもパソコン関係も初心者ですが
どうぞよろしくお願い致します。
> WMIというのを色々調べてVBスクリプトでやってみようと思いVB6.0のランタイム
> とWMI SDKとインストールしてみてもうまくできなくて迷っています。

VB6.0 のランタイムだけインストールしたんですか?
その目的は何でしょう?

また、WMI から情報を取り出すだけなら、WMI SDK は不要です。

WMI SDK の目的は WMI からの情報取得ではなく、WMI に情報を提供するモジュールを作成するための SDK です。

> Windows98なので書いてる設定方法も違って全く分かりません。

具体的に、どんなコードを書いて、どんな問題が出たのでしょうか?

あと、Windows 98 では WMI は標準状態では使えなかったと思います。

Windows 98 で WMI を使うには、Microsoft 社のダウンロードサイトから、WMI のランタイムをダウンロードしてインストールする必要があります。

> できるだけビジュアルスタジオ.NetのC#言語で作りたいのですが
> 何か方法はないのでしょうか?

System.Management 名前空間配下のクラスを使えば、WMI を操作して情報を取得することができます。

プロセス一覧を取得する程度の簡単なコードサンプルなら、私のブログにもあります。

[サンプル][C#] System.Management クラス (WMI) を使ったプロセスの列挙 :
http://www.users.gr.jp/blogs/hidori/archive/2005/01/14/7385.aspx
  • 題名: Re[5]: 接続者の取得
  • 著者: ベルグ
  • 日時: 2005/04/08 11:51:55
  • ID: 10316
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ご返答ありがとうございます。
Managementのdllを追加してみて、サンプルコードを拝見させていただきました。

書きたいコードなのですが、下記のHPにてそれらしい物を見つけたのですが、
VBのコードなのでどうC#に変更すればいいのか分からないのです。
http://wmifun.atinfinity.net/wmisample/win32_serverconnection.html
Managmentクラスの中に隠れてるのだと思いますが・・・
このHPに乗っているVBのコードを載せておきます。

共有フォルダのセッションを取得するサンプルです。Win32_ServerConnectionクラスを使用します。
実行すると現在共有フォルダにアクセスしてきているユーザー名とコンピュータ名を表示します。

Private Sub Command1_Click()

Dim ScnSet As SWbemObjectSet
Dim Scn As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim MesStr As String

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer
Set ScnSet = Service.ExecQuery("Select * From Win32_ServerConnection")

For Each Scn In ScnSet
  
  MesStr = MesStr & "ユーザ名:" & Scn.UserName & vbCrLf & _
      "コンピュータ名:" & Scn.ComputerName & vbCrLf & _
      "共有フォルダ名:" & Scn.ShareName & vbCrLf & vbCrLf
      
Next

MsgBox "共有フォルダのセッション一覧です。" & vbCrLf & vbCrLf & _
      MesStr & "ですよ。"

Set ScnSet = Nothing
Set Scn = Nothing
Set Service = Nothing
Set Locator = Nothing

End Sub

以上のコードが書いてありました。
これをC#に直したらどういうコードになるのでしょうか?
目的はこのHPに乗ってる通り、
共有フォルダにアクセスしてきているユーザー名とコンピュータ名を表示。
よろしくお願い致します。

DOBON.NET | プログラミング道 | プログラミング掲示板