由于学校采用了静态IP,以至于每次换网络环境的时候就要调整一次,非常麻烦。所以在网上找了相关的文章来看,试图用python写一个这样的小工具。

本来是想用WMI的,但是总是报错,不知道为什么。弄不下去了我就试着用改注册表的方法,反正都是学习啊。

截图:

代码:

#!/usr/bin/env python
#-*- encoding:gb2312 -*-
# Filename: IP.pyimport sitecustomize
import _winreg
import ConfigParser
from ctypes import *print '正在进行网络适配器检测,请稍候…'
printnetCfgInstanceID = None
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
r'System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}')
keyInfo = _winreg.QueryInfoKey(hkey)# 寻找网卡对应的适配器名称 netCfgInstanceID
for index in range(keyInfo[0]):hSubKeyName = _winreg.EnumKey(hkey, index)hSubKey = _winreg.OpenKey(hkey, hSubKeyName)try:hNdiInfKey = _winreg.OpenKey(hSubKey, r'Ndi\Interfaces')lowerRange = _winreg.QueryValueEx(hNdiInfKey, 'LowerRange')# 检查是否是以太网if lowerRange[0] == 'ethernet':driverDesc = _winreg.QueryValueEx(hSubKey, 'DriverDesc')[0]print '检测到网络适配器名:', driverDescnetCfgInstanceID = _winreg.QueryValueEx(hSubKey, 'NetCfgInstanceID')[0]print '检测到网络适配器ID:', netCfgInstanceIDif netCfgInstanceID == None:print '没有找到网络适配器,程序退出'    exit()break_winreg.CloseKey(hNdiInfKey)except WindowsError:print r'Message: No Ndi\Interfaces Key'# 循环结束,目前只提供修改一个网卡IP的功能_winreg.CloseKey(hSubKey)
_winreg.CloseKey(hkey)# 通过修改注册表设置IP
strKeyName = 'System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\' + netCfgInstanceIDprint '网络适配器的注册表地址是:\n', strKeyNamehkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \strKeyName, \0, \_winreg.KEY_WRITE)config = ConfigParser.ConfigParser()print
print '正在打开IP.ini配置文件…'config.readfp(open('IP.ini'))
IPAddress = config.get("school","IPAddress")
SubnetMask = config.get("school","SubnetMask")
GateWay = config.get("school","GateWay")
DNSServer1 = config.get("school","DNSServer1")
DNSServer2 = config.get("school","DNSServer2")
DNSServer = [DNSServer1,DNSServer2]print '配置文件内设定的信息如下,请核对:'
print
print 'IP地址:', IPAddress
print '子关掩码:', SubnetMask
print '默认网关:', GateWay
print '主DNS服务器:', DNSServer1
print '次DNS服务器:', DNSServer2
printres = raw_input('现在,请您决定:输入1,则将配置文件写入系统;输入2,则将现有的系统设定还原为全部自动获取;否则程序退出:')
if str(res) == '1':try:_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000000)_winreg.SetValueEx(hkey, 'IPAddress', None, _winreg.REG_MULTI_SZ, [IPAddress])_winreg.SetValueEx(hkey, 'SubnetMask', None, _winreg.REG_MULTI_SZ, [SubnetMask])_winreg.SetValueEx(hkey, 'DefaultGateway', None, _winreg.REG_MULTI_SZ, [GateWay])_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, ','.join(DNSServer))except WindowsError:print 'Set IP Error'exit()_winreg.CloseKey(hkey)print '切换成功!重置网络后即可生效'elif str(res) == '2':try:_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000001)_winreg.SetValueEx(hkey, 'T1', None, _winreg.REG_DWORD, 0x00000000)_winreg.SetValueEx(hkey, 'T2', None, _winreg.REG_DWORD, 0x00000000)_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, None)_winreg.SetValueEx(hkey, 'DhcpConnForceBroadcastFlag', None, _winreg.REG_DWORD, 0x00000000)_winreg.SetValueEx(hkey, 'Lease', None, _winreg.REG_DWORD, 0x00000000)_winreg.SetValueEx(hkey, 'LeaseObtainedTime', None, _winreg.REG_DWORD, 0x00000000)_winreg.SetValueEx(hkey, 'LeaseTerminatesTime', None, _winreg.REG_DWORD, 0x00000000)except WindowsError:print 'Set IP Error'exit()_winreg.CloseKey(hkey)print '切换成功!重置网络后即可生效'else:print '用户手动取消,程序退出'exit('')

其实有很多代码都是抄的啦,但是自己也添加了不少地方。

参考链接:http://www.blogjava.net/qujinlong123/archive/2007/06/20/125434.html

切换IP地址的小工具相关推荐

  1. 计算机如何输入ip地址,电脑如何切换ip地址_怎么让电脑切换ip地址-win7之家

    在每台电脑中,系统中的ip协议都会有提供一种统一的ip地址,能够为为互联网上的每一个网络和每一台主机分配一个逻辑地址,从而达到屏蔽物理地址的差异,同时我们也可以对ip地址进行切换,那么电脑如何切换ip ...

  2. IP地址更改小工具(bat命令)

    为了方便切换IP地址,特编制bat命令代码来实现,将以下代码复制到txt文本中,然后保存为bat文件,双击bat文件运行即可. 通过bat命令运行,自动修改IP地址,代码如下: @echo off c ...

  3. 网络之IP地址规划小技巧分享(秘)

    文章目录 IP地址规划小技巧 一.案例分析 二.如何划分地址可以做到避免地址浪费的现象 1.纵观全局 2.娓娓道来 三.总结 IP地址规划小技巧 一.案例分析 二.如何划分地址可以做到避免地址浪费的现 ...

  4. 切换ip地址是什么意思 切换ip地址的快捷方式

    切换ip地址是什么意思 切换IP地址是指计算机更换通信地址.这就像我们日常生活中的改变家庭地址一样.每一台计算机都有世界上唯一的IP地址来确定它的位置.切换IP地址通常用于访问不同地区的网络或者改变网 ...

  5. bat 切换网络适配器_Windows批处理自动切换IP地址设置无线网络和以太网的IP地址...

    经常带着笔记本电脑来回公司与家里上网,会碰到要切换本地IP的情况,由于上班公司工作需要设置固定IP才能上网,而在家都是自动获取IP地址的,下面这个bat批处理文件,可以很方便切换IP地址. @echo ...

  6. python q切换指定目录_Python小工具:3秒钟将视频转换为音频

    阅读文本大概需要 5 分钟. 作者 | pk 哥来源公众号 | Python知识圈 最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了. 这样,对 ...

  7. 一个切换鼠标左右手的小工具

    写这个工具的目的 离上一篇博客已经好多年过去了,之间发生了太多故事,做的事情太杂了,有项目经理,有安全负责人,有java开发,现在又做产品经理了,有时候还跑售前讲PPT,本质工作已经离开发渐行渐远,但 ...

  8. 5_Windows下利用批处理切换IP地址

    作为IT从业人士,我们经常需要在公司上网(严格意义上来说本人不算IT人士,顶多算个计算机科学的爱好者,也许连个爱好者 也算不上),但是公司和家里的IP地址通常不一样(也许有人会说,公司和家里的IP一定 ...

  9. linux切换ip地址脚本,批处理实现的ip地址切换的复杂脚本

    @echo off cls echo **************** echo IP地址切换 echo 版本:070510 echo **************** echo. echo 0705 ...

最新文章

  1. 【deeplab】Semantic Image Segmentation with Deep Convolutional Nets and Fully
  2. 修改meta标签 查看源码没效果怎么办_Spring 源码学习(三)-自定义标签
  3. 深入理解浏览器原理和架构|硬核
  4. 根据一个属性,剔除 Json 中重复元素(删除 JSON 中重复的部分)
  5. 如何用C++来计算大数字乘法
  6. TensorFlow:判断CUDA和GPU是否可用
  7. Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 上篇
  8. java 打印 型比卡丘_Java_总结三(选择与循环)
  9. [挑战杯] 火焰检测
  10. 太容易的钱,最让人心慌
  11. 动手学习数据分析——第一部分
  12. 3d建模做一单多少钱?做外包赚钱吗?
  13. 解决:tomcat部署遇到问题:One or more Filters failed to start. Full details will be found in the appro
  14. linux lib文件夹,Linux下的lib文件故障解决实例
  15. python自动获取微信公众号最新文章
  16. cogs 944. [東方S3] 藤原妹红
  17. 作为程序员,在挑选 iPad 时我在想什么?
  18. 在Ubuntu上安装VM WarePlayer 编译不过
  19. Linux画图工具gnuplot
  20. Python习题册_from_big brother

热门文章

  1. UnboundLocalError: local variable ‘list‘ referenced before assignment
  2. genymotion无法注册解决方案
  3. ps命令查看进程状态
  4. 365gps怎样修改服务器,gps365定位器怎么用(gps定位器ID号怎么获取)
  5. 星际争霸1的AI设计思路:以人族开局为例
  6. CUUG陈老师分享考过11g OCM经验
  7. 三十岁而立之年混成怎么样才算成功?
  8. Spherical Harmonics(球谐函数)与PRT
  9. 高通dw9800W_actuator流程总结
  10. 推荐凉菜-凉拌木耳黄瓜花生米