PDA

View Full Version : تغیرات در local با استفاده از C#‎



boysilent
شنبه 29 بهمن 1390, 15:55 عصر
سلام بچه ها میخواستم ببینم چطوری میشه قسمت ای پی دادن رو که خالیه با دستورات C# پر کرد؟؟؟
ip ver4
که شامل این قسمت هاست؟
192.168.0.1
255.255.255.0
و get way???

چطوری میشه اینارو تغیر داد با یه برنامه؟؟؟؟؟

flash118
شنبه 29 بهمن 1390, 16:33 عصر
با سلام دوست عزیز بفرمایید اینجا رو یک نگاه بندازی مشکلتون حل میشه
لینک (http://www.codeproject.com/Articles/5697/Configuring-TCP-IP-Settings-using-WMI-and-C)
using System;
using System.Management;

namespace WindowsFormsApplication_CS
{
class NetworkManagement
{
/// <summary>
/// Set's a new IP Address and it's Submask of the local machine
/// </summary>
/// <param name="ip_address">The IP Address</param>
/// <param name="subnet_mask">The Submask IP Address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setIP(string ip_address, string subnet_mask)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
try
{
ManagementBaseObject setIP;
ManagementBaseObject newIP =
objMO.GetMethodParameters("EnableStatic");

newIP["IPAddress"] = new string[] { ip_address };
newIP["SubnetMask"] = new string[] { subnet_mask };

setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
}
catch (Exception)
{
throw;
}


}
}
}
/// <summary>
/// Set's a new Gateway address of the local machine
/// </summary>
/// <param name="gateway">The Gateway IP Address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setGateway(string gateway)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
try
{
ManagementBaseObject setGateway;
ManagementBaseObject newGateway =
objMO.GetMethodParameters("SetGateways");

newGateway["DefaultIPGateway"] = new string[] { gateway };
newGateway["GatewayCostMetric"] = new int[] { 1 };

setGateway = objMO.InvokeMethod("SetGateways", newGateway, null);
}
catch (Exception)
{
throw;
}
}
}
}
/// <summary>
/// Set's the DNS Server of the local machine
/// </summary>
/// <param name="NIC">NIC address</param>
/// <param name="DNS">DNS server address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setDNS(string NIC, string DNS)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
if (objMO["Caption"].Equals(NIC))
{
try
{
ManagementBaseObject newDNS =
objMO.GetMethodParameters("SetDNSServerSearchOrder");
newDNS["DNSServerSearchOrder"] = DNS.Split(',');
ManagementBaseObject setDNS =
objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
}
catch (Exception)
{
throw;
}
}
}
}
}
/// <summary>
/// Set's WINS of the local machine
/// </summary>
/// <param name="NIC">NIC Address</param>
/// <param name="priWINS">Primary WINS server address</param>
/// <param name="secWINS">Secondary WINS server address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setWINS(string NIC, string priWINS, string secWINS)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
if (objMO["Caption"].Equals(NIC))
{
try
{
ManagementBaseObject setWINS;
ManagementBaseObject wins =
objMO.GetMethodParameters("SetWINSServer");
wins.SetPropertyValue("WINSPrimaryServer", priWINS);
wins.SetPropertyValue("WINSSecondaryServer", secWINS);

setWINS = objMO.InvokeMethod("SetWINSServer", wins, null);
}
catch (Exception)
{
throw;
}
}
}
}
}
}
}

موفق باشید
منبع:http://stackoverflow.com

boysilent
شنبه 29 بهمن 1390, 16:48 عصر
این همش شی گرا هست متاسفانه من شی گرایی بلئ نیسم بازم ممنون
دوستان کسی دیگه میتونه یکم ساده تر راهنمایی کنه؟

flash118
شنبه 29 بهمن 1390, 17:51 عصر
با سلام والا چی بگم یه تابع براتون نوشتم دیگه از این سادتر بلد نیستم ببنید:
public void setIP(string IPAddress,string SubnetMask, string Gateway)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach(ManagementObject objMO in objMOC)
{
if (!(bool) objMO["IPEnabled"])
continue;

try
{
ManagementBaseObject objNewIP = null;
ManagementBaseObject objSetIP = null;
ManagementBaseObject objNewGate = null;
objNewIP = objMO.GetMethodParameters("EnableStatic");
objNewGate = objMO.GetMethodParameters("SetGateways");

objNewGate["DefaultIPGateway"] = new string[] {Gateway};
objNewGate["GatewayCostMetric"] = new int[] {1};
objNewIP["IPAddress"] = new string[] {IPAddress};
objNewIP["SubnetMask"] = new string[] {SubnetMask};
objSetIP = objMO.InvokeMethod("EnableStatic",objNewIP,null);
objSetIP = objMO.InvokeMethod("SetGateways",objNewGate,null);

Console.WriteLine("Updated IPAddress, SubnetMask and Default Gateway!");
}
catch(Exception ex)
{
Console.WriteLine("Unable to Set IP : " + ex.Message);

}

}
}

boysilent
شنبه 29 بهمن 1390, 17:54 عصر
ممنونم از شما ولی من چطوری باید مقادیری رو که توی تکست باکس نوشتم
با این تابع وفق بدم ؟؟؟چقد بده خداییش بلد نیسم :خجالت:
من میخوام سه تا فیلد بزارم که این ای پی ها رو توش وارد کنم و روی دکمه که کلیک کردم مقدارش عوض بشه؟