VB6编写的Hosts编辑器

1,Hosts是什么?
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
需要注意的是,Hosts文件配置的映射是静态的。一旦一个域名和IP地址在Hosts文件中建立了映射关系,如果在网络上的计算机IP地址发生了更改,用户需要及时更新Hosts文件中的对应映射,否则将不能正常访问。
我们利用这一点,可以屏蔽掉一些非法色情类网站,达到绿坝的效果。
2, Hosts文件存储位置?
hosts文件在不同操作系统(甚至不同Windows版本)的位置都不大一样,
以下为hosts文件在不同系统中所处的目录
Windows XP/2000/Vista/7/8/8.1/10位于:C:\windows\system32\drivers\etc*
3,hosts文件的系统属性
hosts文件默认具有隐藏属性,系统默认设置情况下是看不到的,当然进到这个文件除了直接输入路经也是无法看到了。解决办法:打开我的电脑->点击工具->文件夹选项->查看->取消勾选隐藏受保护的系统文件->确定即可。
如果修改后无法保存:在Hosts文件上面点右键->属性->把只读属性去掉->确定,即可保存。
4,如何修改 hosts文件?
可以使用 记事本 打开 Hosts文件后进行编辑。也可以使用
VB6编程工具*制作自己的编辑工具。
修改 hosts先要了解它的格式:IP地址 主机名(网站域名) # 备注
例如: 127.0.0.1 www.csdn.net # 一级域名
127.0.0.1 editor.csdn.net # 二级域名不需要加www
# 此符号后边表示注射
各字段之间 空一格 有效

5,用VB6如何修改 hosts文件?
①先找到 Hosts文件存储位置:

 
'查找Hosts文件存储位置:
Private Sub GetSystem32Path()
  Dim S As String * 80, Length As Long
  
      Length = GetWindowsDirectory(S, Len(S))
      WinPath = Left(S, Length)
      Length = GetSystemDirectory(S, Len(S))
      SysPath = Left(S, Length)
     ' MsgBox "系统目录" & SysPath
 End Sub

② 找到后,读取Hosts文件内容并显示出来,简单的显示界面如下图所示:
VB6编写的Hosts编辑器
左上角TEXT控件显示的是Hosts文件头,这里的内容已被本人汉化过了,你的机器上应该是英文版的。左下角LISTVIEW控件里显示的就是具体的IP和主机网站列表。右边就是常用的操作选项。

Private Sub ReadFromFile() '读取Hosts文件
   On Error GoTo Errhandle10086
    Dim fileNumber As Integer
    Dim TextLine As String
    Dim lngItem As Long
    Dim Index As Long
     
    Dim I As Integer
    
    Dim tmp As String
    
    Trrm = GetTickCount
    Txt_文件头显示 = ""
    Hosts数量 = 0
    ' 获取一个未使用的文件编号
    fileNumber = FreeFile
    
    ' 打开文本文件进行读取
    
'    Open "C:\Windows\System32\drivers\etc\hosts" For Input As #fileNumber
    Open SysPath & "\drivers\etc\hosts" For Input As #fileNumber
    ' 循环直到文件结束
    Do While Not EOF(fileNumber)
        ' 读取一行文本
        Line Input #fileNumber, TextLine
        ' 输出读取的文本
        'Debug.Print TextLine
        '读取文件头,如果有的话就显示在文本中
       If Left(TextLine, 1) = "#" Then
          Txt_文件头显示 = Txt_文件头显示 & TextLine & vbCrLf
          TextLine = ""
          
       Else
         '处理IP地址等
         'HOSTS文件格式如下:IP地址    空格 网站名称      空格(20) 注释号(#)空格(20) 注释内容 结束符号(0D 0A)
        '                    127.0.0.1       a999d.com.cn           #                  黄色网站
        '            3132372E302E302E31 20   61393939642E636F6D2E636E 20 23 20 BBC6C9ABCDF8D5BE   0D0A
        '313237 2E 30 2E 30 2E 31 2020202020202020202020202020 61393939642E636F6D2E636E 202320 BBC6C9ABCDF8D5BE0D0A
        '2020202020202020203132372E302E302E31202020202020202020202020202061393939642E636F6D2E636E202320BBC6C9ABCDF8D5BE0D0A
         '思路:先读取字串长度
                        
            If Len(TextLine) <> 0 Then
              ' 去除左边空格
               TextLine = LTrim(TextLine)
              'Debug.Print TextLine
              
             '①得到IP段
               I = InStr(1, TextLine, " ")
            
              
'                      a = Split(TextLine, ".")
'                      IPv4_1 = a(0)
'                      IPv4_2 = a(1)
'                      IPv4_3 = a(2)
'                      IPv4_4 = a(3)
                      'IPv4 = IPv4_1 & "." & IPv4_2 & "." & IPv4_3 & "." & IPv4_4
                  If I = 0 Then
                     IPv4 = TextLine
                  Else
                      IPv4 = Left$(TextLine, I - 1)
                      '舍去IP段
                      tmp = Mid$(TextLine, I, Len(TextLine))
                 
                      TextLine = tmp
                     ' 去除左边空格
                      TextLine = LTrim(TextLine)
                     'Debug.Print TextLine
                  End If
                 
                 
                
                '②得到网站地址
               I = InStr(1, TextLine, " ")
                 If I = 0 Then
                    网站地址 = TextLine
                 Else
                    网站地址 = Left$(TextLine, I - 1)
                  '舍去网站地址
                 tmp = Mid$(TextLine, I, Len(TextLine))
                  TextLine = tmp
                ' 去除左边空格
                 TextLine = LTrim(TextLine)
                'Debug.Print TextLine
                 End If
             
                
               '③备注处理
               I = InStr(1, TextLine, " ")
                 If I = 0 Then
                   备注 = ""
                 Else
                   备注 = Left$(TextLine, I - 1)
               '舍去备注地址
                   tmp = Mid$(TextLine, I, Len(TextLine))
                   TextLine = tmp
               ' 去除左边空格
                   TextLine = LTrim(TextLine)
                'Debug.Print TextLine
                
                   备注 = TextLine
               End If
              
               
               Hosts数量 = Hosts数量 + 1
          
          '添加数据
 
                    With ListView1
                     Index = .AddItem(CStr(Hosts数量)) '.AddItem("[" & CStr(Hosts数量) & "]", ImageBox1.Image(7)) '第一栏:项目序号,随机图标
                     .SubItems(1) = IPv4
                     .SubItems(2) = 网站地址
                     .SubItems(3) = 备注
                     
 
                    End With
 
            End If
       End If
    DoEvents '防止文件过大卡界面
    Loop
    
    ' 关闭文件
    Close #fileNumber
     Label1 = "读取[" & Hosts数量 & "]条数据共用:" & (GetTickCount - Trrm) & "毫秒"
    Exit Sub
Errhandle10086:
  MsgBox "读取Hosts文件错误!"
    
End Sub

③读取并显示成功后,我们就可以在LISTVIEW控件里直接修改数据,也可以添加新的数据到LISTVIEW控件中去。
当我们需要添加一条数据时的处理:

Private Sub Command8_Click() '添加数据
   Dim I As Integer
   Dim Index As Long
     IPv4 = ""
    '纠错
    For I = 0 To 3
      If Len(Txt_IPv4(I)) = 0 Or Val(Txt_IPv4(I)) > 255 Then Txt_IPv4(I) = "127"
       IPv4 = IPv4 & Txt_IPv4(I) & "."
    Next I
    
    If Len(Text1) = 0 Then Text1 = "www.sdo999.com"
   网站地址 = Text1
   
   

    '添加数据
     Hosts数量 = Hosts数量 + 1
     
     
                    With ListView1
                     Index = .AddItem(CStr(Hosts数量)) '.AddItem("[" & CStr(Hosts数量) & "]", ImageBox1.Image(7)) '第一栏:项目序号,随机图标
                     .SubItems(1) = IPv4
                     .SubItems(2) = 网站地址
                     .SubItems(3) = ""
                     .Refresh '刷新
 
                    End With
End Sub

当我们需要删除某行内容时的处理:

Private Sub Command11_Click() '删除选中行
 
  Dim Index As Long
   If Hosts数量 < 1 Then Exit Sub
   '删除选中行,要将后边的数据往前移动,这里为了省事直接把最后一行移动到当前删除行
   If 当前选中行 = Hosts数量 - 1 Then Command3_Click: Exit Sub
   '不是最后一行的话,就将最后一条移动到此条来
   '读取LISTVIEW里边的数据
        With ListView1
             IPv4 = .SubItems(1, Hosts数量 - 1) '格式:行,列
             网站地址 = .SubItems(2, Hosts数量 - 1) '格式:行,列
             备注 = .SubItems(3, Hosts数量 - 1)  '格式:行,列
       
             Index = .AddItem(CStr(当前选中行))  '.AddItem("[" & CStr(Hosts数量) & "]", ImageBox1.Image(7)) '第一栏:项目序号,随机图标
                     .SubItems(1, 当前选中行) = IPv4
                     .SubItems(2, 当前选中行) = 网站地址
                     .SubItems(3, 当前选中行) = 备注
                     .Refresh '刷新
        End With
      
        
'        '删除最后一行
       Hosts数量 = Hosts数量 - 1
     ListView1.Remove Hosts数量
     ListView1.Remove ListView1.ListCount

    
End Sub

④修改完成后,我们需要保存文件后才能生效。

Private Sub WriteToFile() '保存数据
   On Error GoTo error10086
    Dim fileNumber As Integer
    Dim I As Long
    Dim tmp As String
    
    Dim TextLine As String
    
    Trrm = GetTickCount
    TextLine = ""
    
   ' 获取一个未使用的文件号
    fileNumber = FreeFile
    
    ' 打开文本文件进行写入,如果文件不存在则创建
    Open SysPath & "\drivers\etc\hosts" For Output As #fileNumber
    
      '写入头文件
    Print #fileNumber, Txt_文件头显示 & vbCrLf
    
    For I = 0 To Hosts数量 - 1
    '读取LISTVIEW里边的数据
        With ListView1
             IPv4 = .SubItems(1, I) '格式:行,列
             网站地址 = .SubItems(2, I) '格式:行,列
             备注 = .SubItems(3, I)  '格式:行,列
        End With
        
      '纠错
      If Len(IPv4) = 0 Then IPv4 = "127.0.0.1"
      If Len(网站地址) = 0 Then 网站地址 = "127.0.0.1"
      If Len(备注) > 0 Then 备注 = "# " & 备注
        
     '合并数据
      TextLine = TextLine & IPv4 & " " & 网站地址 & " " & 备注 & vbCrLf
      DoEvents '防止文件过大卡界面
       Next I
      
     
        
    ' 写入一行文本
       Print #fileNumber, TextLine
    
    Label1 = "保存数据成功!保存[" & Hosts数量 & "]条数据共用:" & (GetTickCount - Trrm) & "毫秒"
   
    
    ' 关闭文件
    Close #fileNumber
    Exit Sub
    
error10086:
    MsgBox "保存文件失败哦!"
    
End Sub

以上就是一个简单好用的Hosts编辑器,更多的功能,比如,相同主机网站的比对,查找某个网站等功能都可以在此源码的基础上增加。
源码下载地址:https://download.csdn.net/download/gosub60/88985789

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
BlueLife Hosts Editor 是专门为帮助您添加,删除或更新域名而构建的 Hosts 编辑软件应用程序。由于这是一个可移植程序,因此必须提及的是,它不会在 Windows 注册表中留下任何痕迹。您可以将其复制到任何 USB 闪存驱动器或其他设备上,并在需要管理域名时随身携带,而无需执行安装步骤。 Windows Hosts 文件编辑器 BlueLife Hosts Editor 中文版Windows Hosts 文件编辑器 BlueLife Hosts Editor 中文版 BlueLife Hosts Editor 拥有简洁直观的布局,使您只需单击几下即可配置专用参数。该程序使您可以从纯文本文件中导入带有域名的列表,或直接在主面板中键入主机名。此外,您还可以阻止,删除和解析域名,启用或禁用所选域以及使用默认的网络浏览器启动当前域。 BlueLife Hosts Editor 使您能够将有关域的信息(IP地址,域名,注释)复制到剪贴板,以将其粘贴到其他第三方实用程序中,执行搜索操作,刷新主面板中显示的数据,并替换IP 。 值得一提的其他值得注意的特色是可以备份和还原主机文件,刷新DNS缓存以消除可能导致连接问题的过时信息以及使用命令行参数。 最后但并非最不重要的一点是,您可以运行或重新启动“ DNS客户端”服务,选择默认IP地址,自动清除DNS缓存,使该实用程序保持在其他工具之上,并根据以下内容自定义文本:字体,字体样式和大小。 在我们的测试过程中,我们注意到 BlueLife Hosts Editor 可以快速且无错误地执行任务。它与系统资源非常友好,因此不会影响计算机的整体性能。 总而言之,BlueLife Hosts Editor 是一款便捷的软件,可以帮助您有效地管理域名。直观的布局使其成为菜鸟和专业人士的理想工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gosub60

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值