PDA

View Full Version : سوال: تغيير دادن IP سيستم



Reza,M
چهارشنبه 08 دی 1389, 17:29 عصر
با سلام خدمت تمام دوستان
من ميخوام يه برنامه اي بنويسم كه IP سيستم رو عوض كنه اگه ممكنه راهنماييم كنيد ؟

pouyansaraf
چهارشنبه 08 دی 1389, 21:54 عصر
با سلام



Private Sub SetIP(ByVal IPAddress As String, ByVal SubnetMask As String, ByVal Gateway As String)
Dim managementClass As New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim mgObjCollection As ManagementObjectCollection = managementClass.GetInstances()
For Each mgObject As ManagementObject In mgObjCollection
If Not CType(mgObject("IPEnabled"), Boolean) Then Continue For
Try
Dim objNewIP As ManagementBaseObject = Nothing
Dim objSetIP As ManagementBaseObject = Nothing
Dim objNewGate As ManagementBaseObject = Nothing
objNewIP = mgObject.GetMethodParameters("EnableStatic")
objNewGate = mgObject.GetMethodParameters("SetGateways")
' Set the default gateway (decided to declare and initialise
' variables rather than attempting to initialize the array
' while communicating with the WMI.
Dim tmpStrArray() As String = {Gateway}
objNewGate("DefaultIPGateway") = tmpStrArray
Dim tmpIntArray() As Integer = {1}
objNewGate("GatewayCostMetric") = tmpIntArray
' Set the IP address and subnet.
tmpStrArray(0) = IPAddress
objNewIP("IPAddress") = tmpStrArray
tmpStrArray(0) = SubnetMask
objNewIP("SubnetMask") = tmpStrArray
objSetIP = mgObject.InvokeMethod("EnableStatic", objNewIP, Nothing)
objSetIP = mgObject.InvokeMethod("SetGateways", objNewGate, Nothing)
Catch ex As Exception
MessageBox.Show("An error occured: " + ex.Message)
End Try
Next
End Sub


در قسمت Add Reference

System.Management را پیدا کن و Add کنید

در اول برنامه نیز import کنید


Imports System.Management


با دستور زیر نیز فراخوانی کنید


SetIP("192.168.1.230", "255.255.255.0", "192.168.1.51")


اولی IP شما
دومی SubMask شما
سومی نیز Defaul Gateway شما

Reza,M
چهارشنبه 08 دی 1389, 23:43 عصر
دوست عزيز شرمنده من بازم به شما زحمت دادم :خجالت:
ميشه در موردش يكم توضيح بديد و اينكه كه چطور عمل ميكنه , آخه من اجراش كردم هيچ كاري انجام نميداد يا حداقل من متوجه نشدم كه چه كاري ميكنه ؟

pouyansaraf
پنج شنبه 09 دی 1389, 00:09 صبح
سلام
دشمنتون شرمنده.
باید توجه داشته باشید که صفحه و یا Properties
Network تون باز نباشه (خود ویندوز هم اگر بخواد در جایی این تغییرات رو بده اگر باز باشه میگوید که ببندید)

با توجه به Attach ها در سیستم من مشکل نداره

خیلی راحت از این روال SetIP استفاده کنید.
من این قطعه کد رو از تو دانلودام داشتم.

Reza,M
پنج شنبه 09 دی 1389, 00:32 صبح
دوست عزيز قضيه من اينه كه شما فرض كنيد يه سري كامپيوتر وجود داره كه بوسيله شبكه Lan باهم ارتباط دارند و نيز Admin آنها به هر كدام يك IP داده كه با اون به اينترنت وصل بشن مثلا بعضي از IP ها فقط دو ساعت ميتونن از اينترنت استفاده كنن و بعضي ها 24 ساعته ميتونن استفاده كنن.
حال من ميخوام IP يكي از اين سيستم ها رو عوض كنم!

pouyansaraf
پنج شنبه 09 دی 1389, 00:41 صبح
سلام
والا من سر در نیاوردم
اگر منظورتون این باشه که پشت سیستم Client نشسته اید خوب در کنترل پنل ویندوز اینکار رو بکنید

ولی اگر منظورتون این باشه که پشت Server هستید (گر چه من تو شبکه حرفه ای نیستم) شاید ویندوز Server همچین قابلیتی داشته باشه
ولی نیاز به کدنویسی نیست
راستی اگر شما به تغییر IP کلاینت دسترسی ندارید خوب نمیتونید اون رو عوض کنید

ولی برنامه زیر اگر شما دسترسی به تغییر را داشته باشید IP را عوض میکند

FAROKHNEW
پنج شنبه 09 دی 1389, 08:53 صبح
با تشکر چطور می شه dns رو تغییر داد همچنین چطور بصورت اتوماتیک تعرف نمود که ip از dhcp بگیرد ؟

Reza,M
پنج شنبه 09 دی 1389, 09:38 صبح
با سلام دوباره
IP يك سیستم Client رو ميخوام تغيير بدم(نه Server) البته با اتصال Dialup
ولی برنامه زیر اگر شما دسترسی به تغییر را داشته باشید IP را عوض میکند
كدوم برنامه !
دوست عزيز من برنامه اي رو كه اول گذاشتيد دوباره چك كردم تغييري نميداد

Reza,M
پنج شنبه 09 دی 1389, 14:54 عصر
اساتيد محترم اگه ممكنه راهنمايي كنيد ! :ناراحت:

mansourii
جمعه 10 دی 1389, 09:13 صبح
کاری که دوستمون انجام دادن درست بود!
مطمئنی کار نمیکنه؟!:گیج:
برنامه ای که دوستمون گذاشتن به خوبی کار کرد

اما یک روش دیگه

Private Sub ChangeIPMode(ByVal iMode As Integer)

' This script runs in the following modes
' iMode = 0 Query mode.
' = 1 Static IP mode.
' = 2 Dynamic(DHCP) IP mode.
' To use this script, first run it in query mode to find out the network adapter index.
' Change iIndex according to the result from query mode. You can then create 2 scripts
' based upon this script. Name one script as staticip.vbs and the other dynamicip.vbs and
' change the iMode and static IP configuration accordingly.

'// Adapter Index
Const iIndex As Integer = 1

Dim strIPAddress
Dim strSubnetMask
Dim strGateway
Dim strDNSServerSearchOrder
Dim strGatewayMetric
Dim strComputer
Dim blnQuery As Boolean
Dim blnDHCPEnabled As Boolean

Dim objWMIService
Dim colNetAdapters

' The static IP address configuration here
strIPAddress = "192.168.1.60"
strSubnetMask = "255.255.255.0"
strGateway = "192.168.1.1"
strDNSServerSearchOrder = "192.186.1.103"
strGatewayMetric = "1"

'Do not change below.
strComputer = "."
objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

Select Case iMode
Case 0
blnQuery = True
Case 1
blnDHCPEnabled = False
Case 2
blnDHCPEnabled = True
End Select

Dim errDNSServerSearchOrder
Dim errEnable
Dim errGateways

' Try


For Each objNetAdapter In colNetAdapters
If blnQuery Then
MessageBox.Show("Adpater index = " & " " & objNetAdapter.Index & vbTab & _
objNetAdapter.Description)
Else
If objNetAdapter.Index = iIndex Then
If blnDHCPEnabled = True Then
errDNSServerSearchOrder = objNetAdapter.SetDNSServerSearchOrder()
errEnable = objNetAdapter.EnableDHCP()
errGateways = objNetAdapter.RenewDHCPLease()
Else
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewayMetric)
errDNSServerSearchOrder = objNetAdapter.SetDNSServerSearchOrder(strDNSServer SearchOrder)
End If
If (errEnable = 0) And (errDNSServerSearchOrder = 0) And (errGateways = 0) Then
MessageBox.Show("The IP address has been changed.")
Else
MessageBox.Show("The IP address could not be changed.")
End If
End If
End If
Next

Dim s As String = "Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"
Dim WMISearcher As System.Management.ManagementObjectSearcher = _
New ManagementObjectSearcher("SELECT * FROM " + s)
Dim para As ManagementBaseObject = Nothing
Dim iface As String = Nothing
For Each mo As ManagementObject In WMISearcher.Get
iface = mo("Caption").ToString()
If Not CBool(mo("DHCPEnabled")) AndAlso _
MessageBox.Show(String.Format("Für das Interface "" {0} "" DHCP aktivieren?", iface), "", _
MessageBoxButtons.YesNo) = DialogResult.Yes Then
mo.InvokeMethod("EnableDHCP", New Object() {})
End If
Next
'Catch ex As Exception

'End Try
End Sub

Reza,M
جمعه 10 دی 1389, 11:09 صبح
دوستان عزيز والا تغيير نمي كنه !
آخه وقتي IP رو دوباره ميخوام بگيرم تغييري نكرده آيا كار من براي گرفتن IP غلط است ؟
اگه غلطه چطور با كد نويسي IP رو بگيرم !
اينم نمونه براي گرفتن IP

Reza,M
شنبه 11 دی 1389, 13:13 عصر
دوستان عزيز منتظر جواب هاتونم
پس چي شد؟

mahdi_rafatjah
چهارشنبه 18 خرداد 1390, 17:18 عصر
عزیزم می خواستم بگم که شما داری ip شبکه را چک می کنی چون من یه شبکه دارم که به اینترنت وصله و وقتی برنامه شما رو دیدم فهمیدم که آی پی شبکه را میده خب می دونی منم می خوام آی پی رو تغییر بدم تاحالا هم ابن کارو با rael hide ip انجام دادم و دنبال یه روش خوبی هستم پیدا کردی خبر بده ممنون البته یه چیزایی دیدم که می تونی تو cmd این کار را بکنی ولی دردسر داره اگه اشتباه نکنم با این می تونی به ccmd دستور بدی

Shell("cmd.exe /c n")
در این جا n = کد مربوطه که می خواین تو cmd بزنید