热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

用vbs实现防止计算机使用LMHosts文件

用vbs实现防止计算机使用LMHosts文件
问:

您好,脚本专家!如何防止计算机使用 LMHosts 文件?

-- MJ

答:

您好,MJ。您知道,这是个有趣的问题,至少对“脚本专家”来说是这样。不是因为脚本难以编写;这实际上非常简单。困难的是(至少对我们来说)在 Windows GUI 中找到 LMHosts 设置;这是我们需要做的,以便我们可以验证脚本实际上起作用。在一段盲目的查找之后(这对“脚本专家”来说很寻常)我们最终找到了要找的东西:

LMHosts 文件

以防您与“脚本专家”一样一窍不通(对于您来说,但愿不是这样),以下是到达此对话框的操作步骤:

1.

从“控制面板”的“网络连接”中,选取任意的网络连接。

2.

在此连接的“属性”对话框中选择“Internet 协议 (TCP/IP)”,然后单击“属性”

3.

在“Internet 协议 (TCP/IP) 属性”对话框中单击“高级”

4.

在“高级 TCP/IP 设置”对话框中查看“WINS”选项卡。您的设置就在这里。

像我们说的那样,找到 LMHosts 复选框是最难的部分;清除复选框(即防止计算机使用 LMHosts 文件)就简单了:

代码如下:

On Error Resume Next  
Const USE_WINS = False
Const USE_LMHOST_FILE = False

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapterConfiguration")
errResult = objNetworkSettings.EnableWINS(USE_WINS, USE_LMHOST_FILE)

Wscript.Echo errResult

我们在脚本开始定义了一对常量(USE_WINS 和 USE_LMHOST_FILE)并将他们设置为 False。我们使用常量 USE_WINS 告诉脚本我们要完全禁用 WINS(Windows Internet 命名服务)的使用。如果不是这样的话(如果您要继续使用 WINS,只是不使用 LMHosts 文件)则将 USE_WINS 的值设置为 True。

同时,常量 USE_LMHOST_FILE 告诉脚本我们是否要使用 LMHosts 文件。我们将此常量设置为 False,因为我们将不使用 LMHosts。如果您改变了想法而决定使用 LMHosts,只需将此常量设置为 True。

当然这非常简单。通过编写脚本解决问题总是非常简单。

嗯,好吧:几乎总是。

下一步是连接到本地计算机上的 WMI 服务(尽管我们还可以在远程计算机上执行此操作)。接下来是下面这行代码:

Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapterConfiguration")

您说对了:这有点不寻常。在大多数 WMI 脚本中,此时我们本该调用 ExecQuery 方法,接着 ExecQuery 为我们返回一个对象的集合来处理。您可能已经注意到在此脚本中我们根本没有使用 ExecQuery。为什么不使用呢?嗯,EnableWINS 方法(用来关闭 WINS 和 LMHosts 文件的方法)是“静态”方法。静态方法无法操作对象的集合;而它只能操作类本身。这表示,您绑定到 Win32_NetworkAdapterConfiguration 类(使用 Get 方法),然后调用 EnableWINS。最终结果为:所有类的实例(即,计算机上的所有网络适配器)将使 LMHosts 禁用。如果您有多个网络适配器,没有规则允许在一个适配器上禁用 LMHosts 而在另一个适配器上启用它。只能是全部启用或全部禁用。

此时,我们仅调用 EnableWINS 方法,依次传递常量 USE_WINS 和 USE_LMHOST_FILE:

errResult = objNetworkSettings.EnableWINS(USE_WINS, USE_LMHOST_FILE)

请注意,我们捕获了变量 errResult 中的返回代码(操作的结果)。我们在脚本的最后一行回显此返回代码。如果 errResult 等于 0,则表示操作成功并且 LMHosts 已被禁用。如果 errResult 为非 0 的任何值,嗯,那就出问题了。在这种情况下,应该检查 WMI SDK 以获得一份 EnableWINS 错误代码的详细列表。

这个问题的答案就是这样。您现在拥有了可禁用 LMHosts 的脚本,而“脚本专家”则了解了在 GUI 中找到 LMHosts 设置的方法。这是个双赢的结果!


推荐阅读
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 介绍一个提供正版Windows软件下载的权威网站,确保用户能够安全合法地获取所需软件。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 优化版Windows 10 LTSC 21H2企业版:适用于低内存设备
    此版本为经过优化的Windows 10 LTSC 21H2企业版,特别适合低内存配置的计算机。它基于官方版本进行了精简和性能优化,确保在资源有限的情况下依然能够稳定运行。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
author-avatar
HANK_LIU刘浩象_862
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有