Hallo,
ich habe ein VBS mit nachfolgendem Inhalt, das ich über eine C#-Form-Anwendung aufrufe:
Dim oSession
Set fs = GetObject("WinNT://" & "SERVERNAME" & "/lanmanserver, FileService")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set MyFile = FSO.OpenTextFile("IP_Liste.txt", 8)
For Each oSession In fs.Sessions
On Error Resume Next
If InStr(oSession.user, WScript.Arguments(0)) <> 0 Then 'userlogin übergeben
MyFile.WriteLine (oSession.computer)
End if
Next
MyFile.Close
welchem ein loginname übergeben wird und das über das Object (fs) dessen IP-Adresse auf dem Server ausliest und in eine Datei hinzuspeichert.
Ich möchte gerne das VBS in c# implementieren, damit dies nicht mehr extern notwendig wird.
Leider scheitere ich an gerade allem und Google mag mich die Tage nicht..
Das Objekt holen klappt ja noch, wenn ich über hinzugefügten VB-Verweis gehe:
object ofs = Microsoft.VisualBasic.Interaction.GetObject(@"WinNT://" + "SERVERNAME" + "/lanmanserver, FileService");
Das weitere aber scheitert kläglich..zudem hat das erzeugte Objekt kein iEnum usw..
Hat da jmd Tipps??
Ohne jetzt direkt eine Antwort geben zu können - warum nutzt du nicht "nur" C#.
Das wäre doch deutlich charmanter als den Umweg über VBS zu gehen.
Funktioniert das Script ohne Probleme?
In was für einer Umgebung läuft das denn?
.....an unhandled exception is the first way to think about your pattern of programming....
.....nur weil ich nicht weiß was dort passiert, bedeutet es nicht, dass ich nicht weiß, wie man es lösen kann - aber das ist wahrscheinlich....
die Antwort ist leicht: weil ich absolut nicht weiß, wie ich das Skipt in c# umsetzen kann..
Ich sitze da schon tagelang dran und google mir die Finger wund..
Skript funzt einwandfrei und wird per
Process scriptProc = new Process();
scriptProc.StartInfo.CreateNoWindow = true;
scriptProc.StartInfo.UseShellExecute = false;
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.WorkingDirectory = Application.StartupPath + @"\Resources\";
scriptProc.StartInfo.Arguments = "//Nologo getpc.vbs " + title;//Title ist der Übergabeparam
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
scriptProc.Start();
aufgerufen
OK,
nach langem Hin- und Her doch noch:
DirectoryEntry fs = new DirectoryEntry("WinNT://SERVERNAME/lanmanserver,Fileservice");
ActiveDs.IADsFileServiceOperations iads_fs = (ActiveDs.IADsFileServiceOperations)fs.NativeObject;
foreach (ActiveDs.IADsSession oSession in iads_fs.Sessions())
{
sdf.Add(oSession.User + ";" + oSession.Computer);
}