| 我被大脚野人绑架了。咳!祸不单行,Service Pack 2 让我的计算机消失了。 | |
| 那到底什么是 Windows 防火墙呢? | |
| 如何找回您的计算机 | |
| 使用脚本管理 Windows 防火墙 | |
| 稍等一会儿…… | |
| 嗯,我怎么还没有找回我的计算机…… | |
| 组策略是我的唯一选择吗? | |
| 如果我连防火墙都不想使用,该怎么办? | |
| 并不像您想像的那么糟糕 |
失踪的东西往往令人着迷。举个例子,我们中有谁没有观看过魔术表演?又有谁不是全神贯注地注视着魔术师让志愿上场配合表演的观众消失呢?(坦白地说,我们大家都担心过:“哎呀,不知道下次还能不能在大街上遇到那个做志愿者的家伙……”)Amelia Earhart 是第一位飞越大西洋的女性,但她是因此而出名的吗?当然不是。Amelia Earhart 出名是因为她无影无踪地消失了。Judge Crater 呢?这可问住了我们。不过,他确实是消失了,您还要怎样?无论是外星人绑架,是百慕大魔鬼三角,还是您童年时代曾经拥有的那只仓鼠 — 妈妈说它莫名其妙地从锁着的笼子中逃走了,总之,人们对已经消失的事物比对眼前的事物的兴趣要大得多。
注意:您知道,我们想来想去,还是觉得仓鼠是没有办法从笼子里逃出的。读到这里,您可能想马上给妈妈打个电话,问一问到底是怎么回事。 |
当然,事物的消失并不总是 非常有趣。(我们本打算说,“盗走‘脚本专家’的银行帐户”就不是什么有趣的事,可这事儿似乎真有人干过。)例如,您可能按部就班地在您的计算机上安装了 Windows XP Service Pack 2,但在您第一次试图远程管理这些计算机时却出现了以下消息:
天哪!是 Windows XP Service Pack 2 让您的计算机消失了?Windows XP 导致您的整个 IT 基础结构蒸发了?自从 Service Pack 2 发行后就没有人再见过 Amelia Earhart,这难道只是巧合吗?!?
不要着急;一切都安然无恙,您的计算机全都在那儿。(真的吗?是的,如果不相信我们,您可以穿过大厅去检查一下。)Service Pack 2 没有导致您的计算机无影无踪地消失。(是的,如果它能让您的某些用户 消失,这可能是一件好事;但是,Service Pack 2 也不能让他们消失。)事实上,Service Pack 2 对您的计算机没有任何损害;它实际上是用来保护 您的计算机的。不过,新的 Windows 防火墙(Service Pack 2 中不仅将其默认启用,并且还将其配置为我们所能够想到的最安全的设置)多数情况下会禁止您使用组策略以外的任何其他方法远程管理这些计算机。这就是 您不能远程管理您的计算机的原因。计算机仍在原处,但是 Windows 防火墙不让任何东西进入,不论是您的脚本、您的命令行工具,还是您可能拥有的任何其他管理应用程序。
如果您最近被外星人绑架了,因此还没有机会安装 Service Pack 2,那您实在是太幸运了。(首先,作为具有超级智能、高度进化的生物,外星人可能已经知道如何在 Service Pack 2 中使用脚本。)在本月的专栏中,我们将引导您用不同的方法在安装之前 配置 Service Pack 2 中的防火墙设置,确保在安装完成后您的计算机是可管理的。如果您已经安装了 Service Pack 2,也不要着急;我们将告诉您需要做哪些更改来恢复远程管理。换句话说,您先不要订机票去百慕大魔鬼三角,脚本专家已经到这里帮助您来了。
但是在我们帮助您之前,先听听我们栏目的主办方说几句怎么样?
Windows 防火墙是 Windows XP 中的新增部分(不要将其与该操作系统中原来附带的 Internet 连接防火墙混为一谈),它是用来帮助计算机防范黑客、Cracker、Slacker、Linebacker 和其他类型的攻击者的。它通过一种非常简单的方式实现上述功能:默认情况下,它自动拒绝发送给它的任何未经请求的网络通信量。这就是您的脚本不能运行的原因:因为远程计算机没有请求这些脚本,所以传入通信量被阻止了。是的,我们知道 您是远程计算机上的本地管理员。但是,这无济于事。防火墙不检查是谁发送了传入通信量,它只是一味地拒绝。就是这么回事。
默认情况下,这个规则没有例外。您的脚本无法通过,命令行工具和 MMC 管理单元无法通过,其他任何东西也都无法通过。实际上,默认情况下,只有一样东西可用于管理运行 Service Pack 2 的计算机,那就是组策略。这是因为组策略不是未经请求的传入通信量。当您的计算机启动时(或用户登录时),计算机会与 Active Directory 联系并请求应用组策略。这使得组策略成了经请求的 通信量,从而使得它能够穿过防火墙。
注意:这也适用于登录和注销脚本以及计算机启动和关机脚本。因为这些脚本是由组策略的上下文指派的并且是在组策略的上下文中运行的,所以它们能够通过防火墙。不过,您在工作站上启动的试图连接到远程计算机的任何脚本都将被拒绝;毕竟,这样的脚本属于未经请求的传入通信量。 应当指出,您总是可以进行反向操作而不会出现任何问题。比如说,您已在计算机上安装了 Service Pack 2,并且您希望启动一个连接到一台远程计算机的传出脚本 — 该远程计算机没有 运行 Service Pack 2。这种情况不会出现问题,这是因为防火墙不限制传出网络通信量(几乎没有例外)。 |
当然,您可能会想:“哼,这些设置可能是默认设置,可我不喜欢 这些默认设置。”好的,没问题。下面让我来告诉您如何更改这些默认设置。
因为这是一个脚本专栏(我们知道,有时连我们自己也难以说清),所以我们关注的主要是以下问题:如何才能重新获得使用脚本远程管理运行 Service Pack 2 的计算机的能力?考虑到防火墙是多么有效地阻挡传入网络通信量,您可能不会相信我们能够重新找回计算机;毕竟,这听起来好像是非常繁复的任务。
不过,信不信由您,找回您的计算机(或者至少使它们重新成为可管理的)是非常的简单:您需要做的全部工作就是启用防火墙上的远程管理设置。启用远程管理后,您就又能够使用脚本、命令行工具和 MMC 管理单元等远程管理计算机啦。实际上,更改该设置并不是启用远程管理的唯一方法;除更改设置外,还有许多替代方法:您可以使用组策略,可以修改注册表,可以使用 Netsh.exe,还可以运行脚本。事实上,问题的关键不是如何 启用远程管理,而是何时启用远程管理。这是因为有下面两个重要因素需要牢记:
| • | 如果您先安装 Service Pack 2,然后 决定启用远程管理,则请记住,您将不能通过远程运行脚本或命令行工具来修改计算机。相反,您必须通过使用组策略或者通过分别访问各台计算机来启用远程管理。 |
| • | 如果您选择分别启用各台计算机,则您可能无法向您的用户请求帮助。这是因为,只有本地管理员才能配置防火墙设置。(防火墙设置是作为一个整体应用于计算机的;您无法将防火墙配置为对用户 A 应用某些设置而不对用户 B 应用这些设置。)如果您的用户不是本地管理员,则您的选择将受到限制。例如,您将不能编写脚本然后用电子邮件将脚本发送给您的用户并要求他们全部运行该脚本。除非用户是本地管理员,否则脚本将失败。 |
下面,我们将立即演练用于启用远程管理的各种不同选择。但是,因为这是一个脚本专栏,所以我们仍旧将绕个弯子 — 我们将讨论使用脚本管理 Windows 防火墙。(是的,我们也知道:等我们绕完了所有这些弯子,Service Pack 3 可能就要发布了。)
虽然 Windows 防火墙有一个很好的脚本模型,但是该模型却有一个令人遗憾的缺点:不能远程创建防火墙对象 (HNetCfg.FwMgr)。换句话说,假定您在 Computer A 上进行设置,想实例化远程 Computer B 上的防火墙对象。您的脚本很可能包含类似以下内容的代码:
Set objFirewall = CreateObject("HNetCfg.FwMgr", "Computer-B")
从语法上讲,这是在远程计算机上创建对象的方法。但是,当您运行该脚本时,您会看到以下结果:
为什么?原因很简单:您不能在远程计算机上创建防火墙对象的实例,就是这么回事。据负责防火墙的产品组说,这样做是为了增强安全性;根据定义,能够远程创建的东西不如那些只能在本地运行的东西安全。因为防火墙是用来增强 计算机的安全性的,所以更应该排除远程创建防火墙对象的能力。
这会造成问题吗?坦白地说,这会造成问题。毕竟,您已经习惯于坐在您的管理员工作站前运行一个外出的 WMI 脚本、连接到一台远程计算机并返回您所需要的信息。但是防火墙却不允许这样;防火墙脚本必须在本地运行。所以说,这会造成问题,但幸运的是,有许多方法可供您用来规避这个问题,不过,其中有一种方法(使用 WMI 的 Win32_Process 类)仅在启用了远程管理后才可以使用。
一种用于解决无法远程创建防火墙对象这一问题的方法是,将您的脚本作为计算机启动脚本或计算机关机脚本运行;如上所述,因为组策略实际上是经请求的 传入流量,所以计算机启动和关机脚本不受防火墙的影响。
那么,为什么不应当将这些脚本作为用户登录或用户注销脚本运行呢?请记住,用户必须是本地管理员才能管理防火墙。如果您的用户不是本地管理员,则登录脚本或注销脚本对您不会有任何帮助;这是因为这两种脚本分别在用户登录和用户注销安全上下文中运行。与它们不同,计算机启动和关机脚本在 LocalSystem 帐户下运行;因此,它们能够用于管理防火墙。
使用计算机启动或关机脚本时,记住这一点也很重要:这些脚本是在计算机启动或关闭时在各台计算机的本地 运行的。为什么这一点很重要呢?首先,因为您习惯于使用 Wscript.Echo 来显示从计算机上获取的信息。例如,这里有一个脚本可以告诉您防火墙是否已启用。它创建防火墙对象,连接到当前的防火墙策略,然后回显 FirewallEnabled 属性的值:
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Wscript.Echo "Firewall enabled: " & objPolicy.FirewallEnabled
只要脚本在您的 计算机上运行,就万事大吉。但是要记住,作为一个启动或关机脚本,该脚本将可以在远程计算机上运行。任何可能出现的消息框或任何回显到命令行提示符下的消息,都将显示在那台远程计算机上。您作为管理员坐在您的工作站前,将无法看到这些消息中的任何一条,也无法知道防火墙是否已启用。
那么,您如何解决这个 问题呢?不要担心;这很简单。不要使用 Wscript.Echo 将信息显示在消息框中,而应使用 FileSystemObject 将该数据写到一个文本文件中。例如,这里有一个用于本地运行(就像所有的防火墙脚本一样)的脚本,该脚本收集有关基本防火墙设置的信息,然后将这些数据写到一个文本文件中,将该文件保存到服务器 atl-fs-01 上的防火墙共享中:
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("\\atl-fs-01\firewall\" _
& strComputer & ".log")
objTextFile.WriteLine("Firewall enabled: " & objPolicy.FirewallEnabled)
objTextFile.WriteLine("Exceptions not allowed: " & objPolicy.ExceptionsNotAllowed)
objTextFile.WriteLine("Notifications disabled: " & objPolicy.NotificationsDisabled)
objTextFile.WriteLine _
("Unicast responses to multicast broadcast disabled: " & _
objPolicy.UnicastResponsestoMulticastBroadcastDisabled)
objTextFile.Close
如果您熟悉 FileSystemObject,就会觉得这个脚本很简单。(如果您不熟悉 FileSystemObject,请查看 Microsoft Windows 2000 Scripting Guide(Microsoft Windows 2000 脚本指南)中的相关部分。)实际上,这里只有一个需要技巧的地方。请注意脚本的前两行,我们使用 Wscript.Network 对象来获取运行该脚本的计算机的名称。然后我们将该名称保存到变量 strComputer 中。
为什么?很高兴您提出这个问题。我们也可以在脚本中硬编码一个文件名,例如,\\atl-fs-01\firewall\firewall_settings.log。如果您只有一台计算机,那这样做很好。但是,假定您有两台计算机。第一台计算机启动,将它的配置信息保存到 Firewall_settings.log。第二台计算机启动,也将它的 设置保存到 Firewall_settings.log,于是会覆盖第一台计算机保存的信息。通过将数据保存到以各台计算机的名称命名的唯一文本文件,我们就可以解决这个问题。
注意:我们能不能让各台计算机将信息追加 到一个文件中呢?当然可以,不过,这样的话,您在保存防火墙数据时就必须确保指定计算机名称。您还可以让各台计算机将它的数据存储在一个数据库中,或者将这些数据添加到一个 Excel 电子表格中。在此,我们的目的并不是向您说明用来处理数据报告的合适 方法;我们只是想让您意识到您需要唯一地标识每台计算机及其防火墙数据。我们给出的示例可能是实现此目的的最简便方法,但它决不是实现此目的的唯一方法(或最佳方法)。 |
当然,在许多组织中,用户并不关闭他们的计算机然后再重新启动,他们只是进行注销而让计算机保持运行。这就带来了另一个新的问题:如果用户永远不关闭他们的计算机,他们的计算机启动或关机脚本将永远不会运行。
不过,我们也有一种方法可以解决这个问题,但这种方法只有在您的 Service Pack 2 计算机上启用了远程管理后才可使用。如果将您的防火墙脚本复制到远程计算机,您就可以使用 WMI 的 Win32_Process 类和 Create 方法来启动和运行这些脚本。例如,您可以在您的所有计算机上创建一个名为 C:\Scripts 的文件夹,然后将您的防火墙脚本复制到所有这些文件夹中。(对,您可以编写一个脚本来使此过程自动执行,这很容易。)
假定现在是下午 3:00,您正坐在您的办公桌前想:“不知道 atl-ws-01 上的 Windows 防火墙是如何配置的。”对于这个问题,组策略是帮不了您的;组策略实际上是用于配置计算机的,而不是用来报告计算机的配置情况的。当然,您可以打电话给拥有该计算机的用户,请求他或她查找并复述所有的防火墙设置。但是,说实话,这个方法听起来也不怎么可行。您真正需要的是一个能够连接到远程计算机并能返回防火墙设置报告的脚本。可是,刚才不是说过不能远程创建防火墙对象吗?
是的,我们的确说过,而且这也是事实:您不能 远程创建防火墙对象。可是您别忘了,我们刚才已将所有与防火墙相关的脚本复制到了该远程计算机上。因为您要运行的脚本 (Basic_properties.vbs) 驻留在 atl-ws-01 上 C:\Scripts 文件夹中,所以您可以使用下面的 脚本来运行远程计算机上的 Basic_properties.vbs:
strComputer = "atl-ws-01"
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
Error = objWMIService.Create _
("c:\scripts\basic_properties.vbs", null, null, intProcessID)
此处我们所做的工作就是绑定到远程计算机 atl-ws-01 上的 Win32_Process class 类。然后我们使用 Create 方法来运行脚本 C:\Scripts\Basic_properties.vbs。极其绝妙的一点是,C:\Scripts\Basic_properties.vbs 是远程计算机上 的路径。我们没有引用管理员工作站上的 C:\Scripts\Basic_properties.vbs,我们引用了远程计算机 atl-ws-01 上的 C:\Scripts\Basic_properties.vbs。我们的计算机上不需要有 Basic_properties.vbs,甚至不需要有 C:\Scripts。所有的工作都是远程进行的。
注意:对于运行那些无法连接到远程计算机的命令行工具和其他实用工具来说,这是一个很好的方法。如果 Netstat.exe 无法从您的计算机连接到远程计算机,您不用发愁;使用 Win32_Process 和 Create 方法运行远程计算机上的 Netstat.exe,然后只需要将输出结果传回您的计算机就可以了。 |
还要记住,这个 Basic_properties.vbs 必须与我们刚才向您展示的那一个相似。不能让它将数据回显到屏幕;那样您将无法看到数据。它需要将数据写到一个文本文件、一个数据库或者其他载体中。不过,一般来说,此方法很有效,而且也不是特别麻烦。
哦,看来此方法还是有一点 麻烦;毕竟,如果您有几百台电脑,您必须将所有防火墙脚本复制到每台电脑,然后在每次对您的防火墙脚本进行更改时还要考虑确保这些脚本保持同步。但是不要担心,您猜对了,我们为您准备了一种解决方法。不过,您是怎么知道的?莫非您在这些专栏文章联机之前就攻入我们的计算机阅读过它们?也许我们应该实施一下我们所宣扬的那些方法并启用 Windows 防火墙啦……
无论如何,这里有一个解决方法。此脚本使用 FileSystemObject 将防火墙脚本 (Basic_properties.vbs) 复制到了计算机 atl-ws-01 上的 C:\Scripts 文件夹中。然后,它使用 Win32_Process 类来运行 Basic_properties.vbs,再立即从 atl-ws-01 上删除 Basic_properties.vbs。最终结果:该脚本在远程计算机上运行,但是您不必费心在您的所有计算机上维护相同的脚本。还有一个意外收获:atl-ws-01 上不会留下 Basic_properties.vbs 的任何踪迹,从而可减小用户有意或无意地删除、修改或以其他方式瞎弄您的脚本的可能性。
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\Firewall\basic_properties.vbs", _
"\\atl-ws-01\C$\Scripts\", OverWriteExisting
strComputer = "atl-ws-01"Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
Error = objWMIService.Create _
("cscript c:\scripts\basic_properties.vbs", null, null, _
intProcessID)
objFSO.DeleteFile("\\atl-ws-01\C$\Scripts\basic_properties.vbs")
注意:您必须使用管理共享(例如 C$),该脚本才起作用。如果您没有使用管理共享,便需要将文件复制到您的远程工作站上的一个共享文件夹中。 |
说得对,本专栏就应该讨论在运行 Service Pack 2 的计算机上启用远程管理的问题,不是吗?哦,好像我们本来要在整篇文章中只谈失踪的东西!奇怪,怎么跑题啦?
好了,我们言归正传:正式推荐的启用远程管理的方法是使用组策略;毫无疑问,在正常情况下,组策略是使您的所有 Service Pack 2 计算机上启用并运行远程管理的最快捷、最轻松的方法。不过,有一个出乎意料的难题。(实际上我们总是 会遇到出乎意料的难题的。)若想让组策略对象中具有新的防火墙属性,您必须首先在一台计算机上安装 Service Pack 2,重新启动该计算机,以域管理员的身份登录,然后 从运行 Service Pack 2 的计算机修改适当的 GPO。这是因为,您必须使用 Service Pack 2 附带的 System.adm 版本替换服务器上原来的 System.adm 组策略模板。
现在,一切还好,只是您从此以后(我们这里引用了正式文档中说法),您只能从运行 Windows XP SP2 的计算机修改它们 [您的 GPO]。如果您没有在您的主管理员工作站上安装 Service Pack 2,您将无法使用该工作站来修改您的 GPO。如果您的同事管理员没有安装 Service Pack 2,则他们 也不能修改 GPO。这是因为您的 System.adm 文件将无法保持同步。用来解决这个问题的更新正在准备之中,但是这的确是一个需要注意的问题。
实际上,让您考虑使用一个计算机启动脚本可能就足够了。虽然启动脚本是使用组策略管理的,但是启动脚本不需要 ADM 模板。因此,您可以指派一个用来启用远程管理的脚本,而不必考虑哪些计算机能够管理 GPO,哪些计算机不能够。因为您不用替换 System.adm,所以不需要考虑这个问题。
我们认为,这个方法几乎与配置启用远程管理的组策略设置一样简便。毕竟,您的启动脚本的核心内容不需要比下面的脚本更花哨;
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objAdminSettings = objPolicy.RemoteAdminSettings
objAdminSettings.Enabled = TRUE
此处需要做的全部工作就是创建防火墙对象,绑定到当前的配置文件,绑定到 RemoteAdminSettings 对象,然后将 Enabled 属性设置为 TRUE。就这些,这就是您需要做的全部工作。如果以后您打算禁用远程管理,只需将 Enabled 属性设置为 FALSE 就可以了:
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objAdminSettings = objPolicy.RemoteAdminSettings
objAdminSettings.Enabled = FALSE
当然,如果还没有完成对您的所有计算机的升级,您还应该包含相应的代码以验证运行脚本的计算机是否已安装了 Service Pack 2;否则,如果脚本试图在没有安装 Service Pack 2 的计算机上创建 HNetCfg.FWMgr 对象,那么您肯定会遇到问题。幸运的是,我们正好有一些可用来判别给定的计算机是否运行着 Windows XP Service Pack 2 的示例代码:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _
"\root\cimv2")
Set colOS = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem WHERE ")
"Caption = 'Microsoft Windows XP Professional' AND " & _
ServicePackMajorVersion = 2")
If colOS.Count <> 0 Then
Wscript.Echo "This computer is running Windows XP Service Pack 2."
Else
Wscript.Echo "This computer is not running Windows XP Service Pack 2."
End If
这又是一个非常简单的小脚本:我们只是查询其 Caption 等于 Microsoft Windows XP Professional 且 ServicePackMajorVersion 等于 2 的所有 Win32_OperatingSystemClass 实例。如果 Count 返回 0,说明没有运行 Windows XP Professional 和/或 Service Pack 2。如果 Count 返回 1,则说明运行着 Windows XP Professional 和/或 Service Pack 2。
如果您想获得有关如何配置和指派计算机启动脚本和关机脚本的详细信息,可以查看 Microsoft 下载中心提供的白皮书。
我们知道,有些人不喜欢使用组策略,有些人不会 使用组策略(例如,您可能供职于一家小公司,该公司使用的是工作组,而没有使用目录服务)。如果是这样,最好的办法就是在您安装 Service Pack 2 之前 配置远程管理。您可以使用一个 .INF 文件或一个无人参与安装文件来执行该操作。有关详细信息,请参阅 Deploying Windows XP Service Pack 2(部署 Windows XP Service Pack 2)这篇文章。另外,还请您抽出几分钟时间观看一下“脚本专家”的网络广播 Scripting with Microsoft Windows XP Service Pack 2: SOS!(使用脚本管理 Microsoft Windows XP Service Pack 2:SOS!)
如果我已经安装了 Service Pack 2,该怎么办?哦,是有一点麻烦。如果您无法使用组策略,就需要让一个管理员到各台计算机前逐个为它们运行用来启用远程管理的脚本。如果您的用户是本地管理员,您可以通过电子邮件将脚本发送给他们并要求他们运行该脚本。否则,就又回到了老式的 Sneaker Net 了。
我们知道,这可不是您希望听到的结果。但是,因为远程管理被禁用了,所以您无法通过网络连接到远程计算机并进行更改。必须让某个人亲自到每台计算机前为计算机运行一个脚本或采取某种措施 来启用远程管理。或者,建议您当即立断使用组策略吧。相信我们,其实组策略没有那么难,况且还有一个白皮书一步步地为您详细介绍如何使用组策略管理防火墙设置。
一般说来,我们建议您不要禁用 Windows 防火墙,何必冒这样的风险呢?但是,您可能已运行了第三方防火墙;在这种情况下,您应当禁用其中的一个防火墙(两个防火墙不如一个防火墙,这种说法可能不会错)。为了避免冲突和混乱,您可以使用这个简单的小脚本来禁用 Windows 防火墙:
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
objPolicy.FirewallEnabled = FALSE
但是,如果您以后又改变了主意,该怎么办呢?如果您在想:“我很想使用 Windows 防火墙。我真的想重新启用它。”该怎么办呢?听着,不用捶胸顿足,只需运行下面的脚本就可以了:
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
objPolicy.FirewallEnabled = TRUE
防火墙将会重新启用,而毫无疑问,您从此以后就可以过上幸福的日子啦。当然,您也可以使用组策略来启用和禁用防火墙。同样,如果您本来就不想使用防火墙,请在您安装 Service Pack 2 时使用 .INF 文件或无人参与安装文件来禁用防火墙。这时,还是有许多可用的方法供您选择;如果您还没有安装 Service Pack 2,则您的选择余地更大。
从好的一面来看(实际上,确实有 很多好处),在您启用了远程管理后,您就又能够使用脚本来管理运行 Service Pack 2 的计算机了。(的确如此,就像从来没有过 Service Pack 2 一样!)不但您的所有旧脚本会正常运行,而且您还可以编写并运行大量的新脚本。这是因为 Service Pack 2 中有许多新的可以利用脚本的功能部件。如果您希望使用脚本对 Service Pack 2 进行某些管理,请查看脚本中心的 Windows XP Service Pack 2 Application Compatibility Scripts(Windows XP Service Pack 2 应用程序兼容性脚本)这篇文章。不用考虑这个名称,它是从另一个小组所做的工作中沿用下来的。您应当将注意力放在脚本上。这些脚本为您提供了多种不同的方法,可供您用来管理 Windows 防火墙,管理 Internet Explorer 中的弹出窗口阻止程序,帮助您实现您在 Service Pack 2 推出之前可望而不可及的各种目标。
实际上您可能连做梦 都没有想过通过编写脚本管理弹出窗口阻止程序。有了弹出窗口阻止程序后,您将需要找到在整个企业中管理这种新功能的最快捷、最轻松的方法。编写脚本的确是一个很好的起步点。在接下来的几个月中,我们还要继续介绍大量关于使用脚本管理 Windows XP Service Pack 2(和即将推出的 Windows 2003 Service Pack 1)的知识,请继续关注我们的栏目吧。
现在,我们得说,所有那些关于神秘失踪和人物和事物的故事等等等等,我们认为都只是……
很抱歉,那只是一个古老的笑话。但是,确实很有意思,所以我们就讲出来与大家分享。
您对本月的专栏文章有什么意见或建议吗?您知道 Amelia Earhart 究竟 出了什么事,或者为什么糖果机上的朱古力巴总是首先失踪吗?请将您的电子邮件发送到以下地址:scripter@microsoft.com。最后提醒您,记着向妈妈问问那只仓鼠的故事喔。