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

VBからC#に変換したい

環境/言語:[C#]
分類:[.NET]

いつもお世話になっています。
以前共有ファイルにアクセスしてきているコンピュータの情報の取得について調べていて、次のようなコードを見つけたのですがVBで掛かれているみたいで、C#に変えたいのですが変換すればどのようになるのか教えていただけませんか?
WMIを使用するということでSystem.Managementのdllを追加して使用しないといけない見たい?なので追加してみましたが、うまく探しだせないでいます。
よろしくお願い致します。

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


見つけたホームページアドレスがこれです
http://wmifun.atinfinity.net/

コードが載っているページはこれです
http://wmifun.atinfinity.net/wmisample/win32_serverconnection.html
>C#に変えたいのですが変換すればどのようになるのか教えていただけませんか?

意地悪で言うわけじゃないですが、1行も自分で変換つか読み替えできないんですか?

詰まるとしたらせいぜい foreach のところくらいじゃないかと思うんですが、具体的にどのヘンが分からないですか?

丸投げしないで、少しは頑張ってみましょうよ。

「まるで分からない」ってことなら、私はこれ以上口出ししませんが。
こんにちは、じゃんぬ です。

■No10404に返信(ベルグさんの記事)
> 次のようなコードを見つけたのですがVBで掛かれているみたいで、
> C#に変えたいのですが変換すればどのようになるのか教えていただけませんか?

「変換」ということなので (^^)
http://dobon.net/vb/dotnet/links/convertvb2cs.html
> >C#に変えたいのですが変換すればどのようになるのか教えていただけませんか?
> 意地悪で言うわけじゃないですが、1行も自分で変換つか読み替えできないんですか?

VB.NET から C♯ならともかく、VBA/VB6 から C♯への変換となると、
VB の知識も無いと、読み替えは難しいかも知れませんね。

どちらにしても、WbemScripting を使い続けるのも酷なので、
System.Management への置き換えは必要ですし。


なので、元のサンプルの事はすっぱり忘れて、System.Management を
使った方式を覚えてから、Win32_ServerConnection クラスを使った方が、
結果的には早道かも。(^^;
  • 題名: Re[3]: VBからC#に変換したい
  • 著者: 魔界の仮面弁士
  • 日時: 2005/04/14 15:10:36
  • ID: 10412
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
とりあえず、.NET系に置き換えたサンプル。


// =========== C♯ によるサンプル ===========
using System;
using System.Management;
class Sample
{
  static void Main()
  {
    ManagementObjectSearcher mos;
    mos = new ManagementObjectSearcher("Select * from Win32_ServerConnection");
    foreach(ManagementObject Scn in mos.Get())
    {
      Console.WriteLine("ユーザ名:" + Scn["UserName"]);
      Console.WriteLine("コンピュータ名:" + Scn["ComputerName"]);
      Console.WriteLine("共有フォルダ名:" + Scn["ShareName"]);
      Console.WriteLine();
    }
  }
}


// =========== JScript.NET によるサンプル ===========
import System;
import System.Management;
var mos : ManagementObjectSearcher;
mos = new ManagementObjectSearcher("Select * from Win32_ServerConnection");
for(var Scn : ManagementObject in mos.Get())
{
  Console.WriteLine("ユーザ名:" + Scn["UserName"]);
  Console.WriteLine("コンピュータ名:" + Scn["ComputerName"]);
  Console.WriteLine("共有フォルダ名:" + Scn["ShareName"]);
  Console.WriteLine();
}


' =========== Visual Basic.NET によるサンプル ===========
Imports System
Imports System.Management
Module Test
  Sub Main()
    Dim mos As New ManagementObjectSearcher("Select * from Win32_ServerConnection")
    For Each Scn As ManagementObject In mos.Get()
      Console.WriteLine("ユーザ名:" & Scn("UserName"))
      Console.WriteLine("コンピュータ名:" & Scn("ComputerName"))
      Console.WriteLine("共有フォルダ名:" & Scn("ShareName"))
      Console.WriteLine()
    Next
  End Sub
End Module
丸投げ信者が増える事に一票。。。OTZ
新入社員がこういう質問するのはしょうがないでしょ。
ご返答ありがとうございます。
そして大変ご迷惑おかけしました。
完全に投げやりにしていたわけではないですが、
自分で探していて、ManagementObjectはあったのですが、
SWbemLocatorとSWbemServicesを必死に探していました。

魔界の仮面弁士さんのコードのManagementObjectSearcherがありますが、
これ一つでよかったのですね・・・
後はforeachでManagementObjectを一つずつ取得していくということですね。

本当にありがとうございます。

後、やはりこれは自分以外の人が入ってこないと表示されませんよね?


> 新入社員がこういう質問するのはしょうがないでしょ。
これについてお恥ずかしいながら当りです。
言い訳にもなりませんが創設したばかりの会社のため頑張っています。
仕事でプログラミングはまだしていませんが、困っていた事なので作ろうとしていました。
プログラマなりそこねの初心者に近い私ですが、正直頼りすぎている所はありました。
他の人の質問に応えようともしていましたが、まだまだ私は弱いですね・・

もっと努力してやってみます。

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