Laden...

[gelöst] Wie kann ich die IP-Adresse eines Logins auf dem Server herausfinden (VBS -> C#)?

Erstellt von Torni vor 3 Jahren Letzter Beitrag vor 3 Jahren 827 Views
T
Torni Themenstarter:in
50 Beiträge seit 2014
vor 3 Jahren
[gelöst] Wie kann ich die IP-Adresse eines Logins auf dem Server herausfinden (VBS -> C#)?

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??

P
57 Beiträge seit 2017
vor 3 Jahren

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....

T
Torni Themenstarter:in
50 Beiträge seit 2014
vor 3 Jahren

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

T
Torni Themenstarter:in
50 Beiträge seit 2014
vor 3 Jahren

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);
            }