用vbs实现禁用服务

问:
您好,脚本专家!如何禁用服务?
-- DS
答:
您好,DS。您知道吗,脚本专家似乎无意中发现了一个好主意。在上期专栏中,我们向大家介绍了如何禁用 LMHosts 文件。今天,我们将向大家介绍如何禁用服务。如果我们这样继续下去的话,不久,我们便可将如何禁用计算机上的一切介绍给大家。请想象一下:不再有网络问题,不再有客户服务中心呼叫,不再有用户覆盖了不应覆盖的文件。我们所要做的就是禁用一切,从而所有这些问题都将消失!这可以是我们通往幸福时光的入场券。
不可否认,禁用计算机上的一切可能导致贵组织出现其他问题。但这只是需要由你们来处理的内部事务。 
此外,我们可能忙于数钱而无法帮助您。
当然,在钞票开始滚滚而来之前,我们仍不得不编写此专栏,我们仍不得不付帐。正因为明确这一点,我们在下面提供了在计算机上禁用 Alerter 服务的脚本:


代码如下:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colServiceList = objWMIService.ExecQuery _ 
    ("Select * from Win32_Service where Name = 'Alerter'") 
For Each objService in colServiceList 
    If objService.State = "Running" Then 
        objService.StopService() 
        Wscript.Sleep 5000 
    End If 
    errReturnCode = objService.ChangeStartMode("Disabled")    
Next

如您所见,禁用服务并不需要很多代码,并且所需的一小段代码都是很基础的代码。不过,有一个棘手的部分,这就是我们为什么将花几分钟时间逐步向您介绍此脚本的原因。 
除此以外,不管怎样 Rolls Royce 经销权都不会多开放一小时。
脚本开始并没什么奇特之处:我们只是连接到本地计算机上的 WMI 服务(尽管我们也可以禁用远程计算机上的服务)。然后,我们发出以下查询,该查询返回一个仅包含一项的集合:Alerter 服务:
Set colServiceList = objWMIService.ExecQuery _
    ("Select * from Win32_Service where Name = 'Alerter'")
顺便说一下,请确保包括了如上所示的 Where 子句。为什么?设想一下,假设您省略了 Where 子句。在这种情况下,您的集合将包含安装在计算机上的所有服务,那么,你的脚本将尽职尽责地试图禁用每个服务。
您说对了:这通常不是什么好事。此外,脚本专家可能会控告您;毕竟,禁用计算机上的一切是我们的主意!
得到集合后,我们建立一个 For Each 循环以遍历该集合内的所有项。(是的,我们知道:集合中只有一项。但我们仍需使用 For Each 循环。)以下是棘手部分。您可以禁用运行中的服务;但是,该服务在停止运行前实际并未被禁用。如果禁用运行中的服务,该服务会一如既往地继续运行;更改将在服务停止后才生效。
正因为如此,我们使用下面这行代码来查看 Alerter 服务是否正在运行:
If objService.State = "Running" Then
如果该服务正在运行,那么我们就调用 StopService() 方法来停止该服务。之后我们暂停 5 秒(5,000 毫秒);使得服务有时间在我们继续操作以禁用它之前真正停止。我们就是照下面这样做的:
objService.StopService()
Wscript.Sleep 5000
注意:为了使该示例脚本尽可能简短,我们做了些手脚。我们假设您的服务仅处于“运行”或“停止”状态。实际上,服务还可能包含其他状态,最显著地是“暂停”或“继续”。要编写一个更稳妥的脚本,您或许还应该检查这些状态(并采取相应的措施)。但是,因为在 99.9% 情况下,服务都处于运行或停止状态,所以您通常可以使用我们给出的脚本蒙混过去。
服务停止后,我们就可以使用下面这行代码禁用它:
errReturnCode = objService.ChangeStartMode("Disabled")
如您所见,我们只是使用 ChangeStartMode 方法更改 StartMode 属性的值。我们要禁用该服务,所以我们将参数“Disabled”传递给 ChangeStartMode。我们还可以将 StartMode 设置为“Manual”或“Automatic”;这样会将 StartMode 设置为“手动”或“自动”。
请记住,服务被停止并禁用后,将无法再启动;重新启动该服务的唯一方法是重新启用它(通过将 StartMode 更改为“手动”或“自动”)。但是,我们会等到说服每个人禁用其计算机上的一切后,才介绍如何重新启用这些东西。毕竟,我们也许能够对这些脚本收取双倍的费用。

(0)

相关推荐

  • bat生成vbs通过注册表禁用或启用USB端口的代码

    当然,你也可以完全使用BAT操作注册表来完成修改注册表的键值的目的,具体方式留以后完善,如果你有好的想法,记得告诉我哦! USB_Disable.bat文件代码: 复制代码 代码如下: @echo off echo On Error Resume next>USB_Disable.vbs echo Dim WshShell>>USB_Disable.vbs echo Set WshShell = WScript.CreateObject("WScript.Shell"

  • vbscript禁用 启用fso的方法

    scrrun.dll scrrun - scrrun.dll - DLL文件信息 DLL 文件: scrrun 或者 scrrun.dll DLL 名称: Microsoft Script Runtime 描述:  scrrun.dll用于阅读和编写脚本和文本文件. 属于: Microsoft Script Runtime  系统 DLL文件: 是 常见错误: File Not Found, Missing File, Exception Errors PS:个人觉得站长看这个很好,禁用你的FS

  • 用vbs实现本地连接禁用/启用脚本代码

    转载至 http://community.csdn.net/Expert/topic/4881/4881882.xml 复制代码 代码如下: Const ssfCONTROLS = 3 sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"等 sEnableVerb = "启用(&A)"  sDisableVerb = "禁用(&B)"   'XP系统中应为 &quo

  • VB实现禁用任务管理器的方法

    在Windows XP下禁用Ctrl-Alt-Delete的方法比较简单,因为Ctrl-Alt-Delete组合键的功能就是调用任务管理器,直接把任务管理器给禁用了,Ctrl-Alt-Delete的功能也就没有了,相当于也给禁用了.这个方法的简单的实现是用二进制 stream 形式先打开 C:\windows\system32\taskmgr.exe任务管理器程序,使后续无法手工正常打开任务管理器.代码如下: 复制代码 代码如下: Open "C:\WINDOWS\system32\taskmg

  • 使用 iisext.vbs 禁用 Web 服务扩展的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可以使用命令行脚本 iisext.vbs(存储于 systemroot\system32 中),通过禁用所有具有特定 Web 服务扩展 ID 的文件来禁用 Web 服务扩展.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地或远程计算机上执行. Iisext.vbs 执行可用于 IIS 管理器的

  • 使用VBS禁用、启动USB存储设备

    USB存储设备控制 By Yu2n XP系统测试通过,需要管理员权限. 在下次插拔设备时生效,无须重启. 'USB_Stock_Block.vbs '=========================================================================================== CheckOS ' 检查操作系统版本 CheckMeState ' 检查程序运行状态 main ' 执行主程序 '==========================

  • 用vbs实现禁用服务

    问: 您好,脚本专家!如何禁用服务? -- DS 答: 您好,DS.您知道吗,脚本专家似乎无意中发现了一个好主意.在上期专栏中,我们向大家介绍了如何禁用 LMHosts 文件.今天,我们将向大家介绍如何禁用服务.如果我们这样继续下去的话,不久,我们便可将如何禁用计算机上的一切介绍给大家.请想象一下:不再有网络问题,不再有客户服务中心呼叫,不再有用户覆盖了不应覆盖的文件.我们所要做的就是禁用一切,从而所有这些问题都将消失!这可以是我们通往幸福时光的入场券. 不可否认,禁用计算机上的一切可能导致贵组

  • 使用 Iisext.vbs 添加Web服务扩展文件的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可以使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中)将单个文件添加到 WebSvcExtRestrictionList Metabase Property中.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地计算机或远程计算机上执行.Web 服务扩展文件

  • 使用 Iisext.vbs 列出 Web 服务扩展文件的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中),列出位于 WebSvcExtRestrictionList Metabase Property中的 Web 服务扩展.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地计算机或远程计算机上执行.Web

  • 使用 Iisext.vbs 启用Web服务扩展的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可以使用命令行脚本 iisext.vbs(存储于 systemroot\system32 中)启用 Web 服务扩展.Web 服务扩展在 WebSvcExtRestrictionList Metabase Property中必须至少有一个文件与之关联.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员

  • 使用 Iisext.vbs 删除 Web 服务扩展文件的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中)从 WebSvcExtRestrictionList Metabase Property中删除单个文件.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地计算机或远程计算机上执行.Web 服务扩展文件可以

  • 使用 Iisext.vbs 启用Web服务扩展文件的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中)启用配置数据库 WebSvcExtRestrictionList Metabase Property 属性中的单个文件.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地计算机或远程计算机上执行.Web

  • 使用 Iisext.vbs 列出Web服务扩展的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中)列出所有已定义的 Web 服务扩展的 ID.这些扩展必须驻留在运行带有 IIS 6 的 Windows Server 2003 家族的成员的计算机上. Iisext.vbs 执行可用于 IIS 管理器的相同的操作.您可以使用任一工具来管理 IIS 网

  • VBS实现查询服务的制造商

    一个网友提问: select * from win32_service 这个能查服务名称.状态-- 但我想查这个服务的制造商,如微软.农业银行,还是未知的??这个属性是什么,谢谢-- 我发现msconfig中可以看见的,但无法提取 下面给出解答,一种间接方法: 根据服务名获取到关联的主程序,再从主程序获取制造商 Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"

  • 使用 chkconfig 和 systemctl 命令启用或禁用 Linux 服务的方法

    对于 Linux 管理员来说这是一个重要(美妙)的话题,所以每个人都必须知道,并练习怎样才能更高效的使用它们. 在 Linux 中,无论何时当你安装任何带有服务和守护进程的包,系统默认会把这些服务的初始化及 systemd 脚本添加进去,不过此时它们并没有被启用. 我们需要手动的开启或者关闭那些服务.Linux 中有三个著名的且一直在被使用的初始化系统. 什么是初始化系统? 在以 Linux/Unix 为基础的操作系统上,init (初始化的简称) 是内核引导系统启动过程中第一个启动的进程. i

  • 注册表的禁用与解锁方法集合

    禁用注册表 ------ 首先,2000/xp/2003用户,运行:services.msc:禁用服务Remote Registry,这样别人就不能远程修改你的注册表了. 然后 1.使用软件禁用注册表 比如:(此间文字由系统自动屏蔽) 2.通过.reg文件 把下面的内容保存为lock.reg,双击后,注册表禁用 REGEDIT4 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "Disab

随机推荐