Autor Beitrag
bjoerg
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 25.11.08 16:08 
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 :-)

ausblenden volle Höhe C#-Quelltext
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:
// Anmeldevorgang ausführen
    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) //Hier weiß ich nicht was ich abfragen muss
        {
          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 user profile iconNarses: C#-Tags hinzugefügt
PerryRhodan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 34


C# (VS 2005 + 2008), .NET 2.0 + 3.5 (inkl. WPF, WCF)
BeitragVerfasst: So 21.12.08 11:25 
Hallo BJoerg,

Guck Dir mal bitte den Beitrag von Peter Huang an: www.dotnet4all.com/d...k-drive-in-code.html

Grüße
PerryRhodan