修改本地DNS的可执行文件,使用管理员权限打开# -*- coding: UTF8 -*- import os import re import wmi import ctypes import sysSTD_OUTPUT_HANDLE = -11 # Windows CMD命令行 字体颜色定义 text colors FOREGROUND_DARKGREEN = 0x02 # dark green. FOREGROUND_RED = 0x0c # red. FOREGROUND_GREEN = 0x0a # green. FOREGROUND_BLUE = 0x09 # blue. FOREGROUND_DARKRED = 0x04 # dark red. # reset white def resetcolor(): set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) # 暗绿色 def darkgreen(mess): set_cmd_text_color(FOREGROUND_DARKGREEN) sys.stdout.write(mess) resetcolor() # 暗红色 def darkred(mess): set_cmd_text_color(FOREGROUND_DARKRED) sys.stdout.write(mess) resetcolor() # get handle std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) def set_cmd_text_color(color, handle=std_out_handle): bl = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return bl def runcmd(cmd): # 执行cmd命令 tmp = os.popen(cmd) res = tmp.read() # 要用read()方法读取后才是文本对象 tmp.close() # 需将对象关闭 pattern = re.compile('. :$', re.M) ip_type = pattern.findall(res) result = [item.strip() for item in res.split("\n") if item.strip() != "" and (item in ip_type or "123.125.97.254" in item) or ( item in ip_type or "114.247.39.112" in item)] ip = str(result).replace('[', '').replace(']', '') return ip def checkip(hostip): # 检查ip是否正确 pat = re.compile(r'([0-9]{1,3})\.') r = re.findall(pat, hostip ".") if len(r) == 4 and len([x for x in r if int(x) >= 0 and int(x) <= 255]) == 4: return True else: return False def moddns(ip): wmis = wmi.WMI() # Windows管理规范 col = wmis.Win32_NetworkAdapterConfiguration(IPEnabled=True) # 遍历可用网络适配器数 if len(col) < 1: print("没有找到可用的网络适配器") exit() num = 0 adns = [ip] # 需要修改的DNS while num < len(col): obj = col[num] if obj.Description.find("Virtual") == -1 and obj.Description.find("VPN") == -1: # 排除虚拟机 # print(obj) # 打印网卡信息(网卡名称、路径、网关、IP地址、DNS、物理地址等信息) rtv = obj.SetDNSServerSearchOrder(DNSServerSearchOrder=adns) # DNS赋值 # print(obj.DNSServerSearchOrder) # 打印DNS信息 if rtv[0] == 0: os.system("ipconfig/flushdns") print("---------------------------------------------") print("以下为修改DNS成功后解析<epay.10010.com>结果,请注意检查核对") print("---------------------------------------------") darkgreen(runcmd("nslookup epay.10010.com")) darkgreen(obj.Description) darkgreen(u'修改DNS成功\n') # 打印网卡修改DNS成功 else: darkred(obj.Description) darkred(u'修改DNS失败\n') # 打印网卡修改DNS失败 num = 1 def dhcpdns(): wmis = wmi.WMI() # Windows管理规范 col = wmis.Win32_NetworkAdapterConfiguration(IPEnabled=True) # 遍历可用网络适配器数 if len(col) < 1: print("没有找到可用的网络适配器") exit() num = 0 while num < len(col): obj = col[num] if obj.Description.find("Virtual") == -1 and obj.Description.find("VPN") == -1: # 排除虚拟机 # print(obj) # 打印网卡信息(网卡名称、路径、网关、IP地址、DNS、物理地址等信息) rtv = obj.SetDNSServerSearchOrder() # print(obj.DNSServerSearchOrder) # 打印DNS信息 if rtv[0] == 0: os.system("ipconfig/flushdns") print("---------------------------------------------") print("以下为修改DNS成功后解析<epay.10010.com>结果,请注意检查核对") print("---------------------------------------------") darkgreen(runcmd("nslookup epay.10010.com")) darkgreen(obj.Description) darkgreen(u'自动获取dns成功\n') # 打印网卡修改DNS成功 else: darkred(obj.Description) darkred(u'自动获取dns失败\n') # 打印网卡修改DNS失败 num = 1 while True: print("---------------------------------------------") print("注意:修改DNS时,请先断开VPN,且以管理员身份运行") print("---------------------------------------------") print("-----请输入0/1/2/3/4-----\n" "0、解析当前DNS\n" "1、自动修改西红门dns\n" "2、自动获取\n" "3、手动修改西红门或硅谷dns\n" "4、退出") i = input("请输入:\n") if i == '0': os.system("ipconfig/flushdns") print("---------------------------------------------") print("以下为解析<epay.10010.com>结果,请注意检查核对") print("---------------------------------------------") print(runcmd("nslookup epay.10010.com")) elif i == '1': print("自动修改西红门DNS地址:222.88.49.150") dns = "222.88.49.150" moddns(dns) # 自动修改西红门DNS elif i == '2': print("自动获取DNS,默认为硅谷") dhcpdns() # 自动获取DNS,默认为硅谷 elif i == '3': dns = input("请输入西红门或硅谷DNS地址:\n" "西红门:24.154.1.4、222.172.200.68(云南)、222.88.49.150(河南)\n" "硅谷:202.106.0.20(北京)、219.150.32.132(天津)\n") while True: if checkip(dns): moddns(dns) # 手动修改西红门或硅谷DNS break else: print("-----------------------") print("请注意检查输入DNS是否正确") print("-----------------------") dns = input("请输入西红门或硅谷DNS地址:\n" "西红门:24.154.1.4、222.172.200.68(云南)、222.88.49.150(河南)\n" "硅谷:202.106.0.20(北京)、219.150.32.132(天津)\n") elif i == '4': quit() else: print("请重新输入!\n")
下载修改本地DNS的方法用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论