Hallo liebe Gemeinde, ich hoffe Ihr könnt mir bei meinem Problem behilflich sein. Wir betreiben im Aussendienst kleine IP-Netzwerke (APIPA-Bereich), wo sich die Benutzer auf vorhandene Freigaben auf den bestehenden Laptops anmelden sollen. Dies realisierte ich bis jetzt mit einer kleinen cSharp Anwendung. Leider funktioniert diese Anmelderoutine seit dem Einspielen vom SP3 nicht mehr. Hier hat MS irgendetwas an den Authentifizierungen geändert. Ich habe nur die Möglichkeit gesehen mich über einen "net use" mit den Freigaben zu verbinden. Dies habe ich dann auch realisiert. Leider habe ich Probleme mit der Fehlerabfrage. So wird mir eine Exception ausgegeben wenn der PC-Name nicht im Netzwerk gefunden wird, jedoch kann ich einen fehlerhaften "net use" Befehl (z.B. falscher Benutzer/ falsches Kennwort) nicht einfangen. Hier der relevante Teil des Scripts... bin nicht so mit C# vertraut, deshalb ein bisschen Nachsicht
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| void buttonClick(object sender, System.EventArgs e) { IPHostEntry hostInfo = Dns.GetHostByName(SystemInformation.ComputerName); IPAddress[] address = hostInfo.AddressList; for (int index=0; index < address.Length; index++) { iphome = Convert.ToString(address[index]); } this.textBox2.Text = iphome; try { IPHostEntry remoteInfo = Dns.GetHostByName(Convert.ToString(this.textBox.Text)); IPAddress[] remoteaddress = remoteInfo.AddressList; for (int index=0; index < remoteaddress.Length; index++) { ipremote = Convert.ToString(remoteaddress[index]); } Process mandanten = new Process(); mandanten.UseShellExecute = false; mandanten.RedirectStandardError = true; mandanten.StartInfo = myProcessStartInfo; mandanten.StartInfo.FileName = "net.exe"; mandanten.StartInfo.Arguments = @"use l: \\" + ipremote + @"\mandanten " + this.textBox5.Text + @" /user:" + this.textBox.Text + @"\" + this.textBox4.Text + @" /persistent:no"; mandanten.Start(); mandanten.Close(); }
catch(SocketException) { this.textBox3.Text = "Entfernter-PC nicht erreichbar"; MessageBox.Show("PC-Name kann nicht gefunden werden.Entfernter-PC ist nicht erreichbar", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); goto fehler; } catch (Exception er) { this.textBox3.Text = ipremote; MessageBox.Show("Fehler beim Verbinden der Laufwerke", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); goto fehler; } this.textBox3.Text = ipremote; MessageBox.Show("Netzlaufwerke K und L sollten nun im Explorer zur Vergügung stehen!\n"); Close(); fehler: this.textBox2.Text=""; this.textBox3.Text=""; } |
Moderiert von Narses: C#-Tags hinzugefügt