IP Adresse setzen in C#

Gast #3224121
Lesenswert?
• ▲
▼
Hallo,

wie setze ich meine lokale IP-Adresse in C#. Zurzeit nutze ich den Code 
unten. Dieser funktioniert aber nicht. Hat jemand einen Tipp?
1
public bool writeNetworkdata(string ip_address, string subnet_mask,string Networkcard)
2
        {
3
            ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
4
            ManagementObjectCollection objMOC = objMC.GetInstances();
5
            try
6
                    {
7
            foreach (ManagementObject objMO in objMOC)
8
            {
9
                if ((bool)objMO["IPEnabled"])
10
                {
11
                    if  (((string)(objMO["Description"]))==Networkcard)
12
                        {
13
                        
14
                        ManagementBaseObject setIP;
15
                        ManagementBaseObject newIP =
16
                        objMO.GetMethodParameters("EnableStatic");
17
                     string []a =  ip_address.Split(',');
18
                        newIP["IPAddress"] = ip_address.Split(',');
19
                        newIP["SubnetMask"] = new string[] { subnet_mask };
20
                        objMO.
21
                        setIP = objMO.InvokeMethod("EnableStatic", newIP,null);
22
                       
23
                        }
24

25
                    }
26
                }
27
                return true;
28
            }
29
            catch
30
            {
31
            return false;
32
            }
Gast #3224187
Lesenswert?
• ▲
▼
Hallo,

Ja ich will die IP-Adresse vom System für eine Netzwerkkarte ändern.
Es wird kein Fehler gezeigt, nur die IP-Adresse und die Subnetmaske wird 
nicht geändert. Das Programm müsste eigentlich mit Admin-Rechten laufen. 
Auslesen kann ich alle Netzwerkarten und die dazugehörigen IP-Adressen.

Viele Grüße,

Eric
Gast #3224803
Lesenswert?
• ▲
▼
Ja den habe ich erwischt. Habe jetzt gesehen, das mein Profil, dem eines 
eingeschränkten Users entspricht. Ich führe Visual Studio 2005 
allerdings als Admistrator aus. Windows 7 (rechtsklich)

Seltsam, bei der FREE Software NetSetMan kann ich die IP-Adresse setzen.
#3224819
Lesenswert?
• ▲
▼
Ich habs letztens so gemacht:
1
/// <summary>
2
    /// Configures the adapter static IP.
3
    /// </summary>
4
    /// <param name="connectionName">Name of the connection.</param>
5
    /// <param name="ip">The ip.</param>
6
    /// <param name="subnetMask">The subnet mask.</param>
7
    public static void ConfigureAdapterStaticIP(string connectionName, string ip, string subnetMask)
8
    {
9
      string cmd = string.Format("interface ip set address \"{0}\" static {1} {2}", connectionName, ip, subnetMask);
10
      StartProcess("netsh", cmd, true);
11
    }
12

13
    /// <summary>
14
    /// Starts the process.
15
    /// </summary>
16
    /// <param name="executable">The executable.</param>
17
    /// <param name="command">The command.</param>
18
    /// <param name="runAsAdmin">if set to <c>true</c> [run as admin].</param>
19
    private static void StartProcess(string executable, string command, bool runAsAdmin)
20
    {
21
      var p = new Process();
22
      var startInfo = new ProcessStartInfo(executable, command);
23
      startInfo.Verb = "runas";
24
      startInfo.WindowStyle = ProcessWindowStyle.Hidden;
25
      startInfo.UseShellExecute = true;
26
      if(runAsAdmin) p.StartInfo = startInfo;
27
      p.Start();
28
    }
#3226024
Lesenswert?
• ▲
▼
Morgen,
jein ;-) Der connectiionName ist der name der Verbindung, wie er in der 
Systemsteuerung angezeigt wird (unter "Systemsteuerung\Netzwerk und 
Internet\Netzwerkverbindungen").
Habs gerade nochmal ausprobiert: bei mir tuts wunderbar (Windows 7 x64).

Du kannst ja mal versuchen, den Befehl netsh über die Konsole manuell 
auszuführen (genau so, wie der Code es tut). Dann siehst du ja an den 
Ausgaben woran es scheitert. Vermutlich stimmt ein Parameter nicht...

EDIT: OK, hat sich ja dann erledigt ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren