回 帖 发 新 帖 刷新版面

主题:[原创]一个关于停止服务,移除服务对应程序的问题!

附件是一个移除服务的代码,目的是移除服务,然后将服务对应的程序删除。现在的代码是停止服务移除服务后,到指定的目录去删除指定的文件,但是如果人家运行程序的时候改了该文件名,那么删除就无效了,代码中的例子是很死板,是知道了该服务对应的程序和路径,然后去删除的。 

我现在需要的功能就是根据服务名获取对应的程序名,然后 停止服务,移除服务,然后删除程序。 

请问用VB 该怎么实现呢? 我的这代码太长了,应该有更简单的代码的吧? 用net好像也可以吧? 

  我的功能需求: 

    根据服务名称,停止该服务,然后删除该服务对应的程序。 请高手指教,高分赠送!代码 网上找的代码,一大堆,乱七八糟的,很多可能都是无用的。嘿嘿! 
也可以在这下载代码
 
http://g0ug0u.shagua911.cn/closeserver.rar   
  


回复列表 (共4个回复)

沙发

没看到你的附件啊?
服务项目都在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,例如ClipSrv服务,它的子键是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClipSrv
在ClipSrv子键中有两个项是你所需要的:DisplayName 和 ImagePath,前者是显示在服务列表中的服务名称,后者是该服务对应的执行文件的路径。
但很多服务的 ImagePath 是 svchost.exe,你可不能删除,万一删了,那...可就要恭喜你发财了!
最好是不要删除文件,只要禁用就可以了,这只要把项Start的数据改为4就行了。

板凳

代码http://g0ug0u.shagua911.cn/closeserver.rar   
 ,注册表 俺不熟悉操作 呜呜! 老大,贴代码出来看看! [em4]

3 楼

同时还希望能知道该服务对应的 程序如果在运行,那么当前进程ID 是多少!

4 楼

如果不熟悉注册表操作,还真不好办。。。这样吧,告诉你一个比较简的方法:
先将你要禁用的服务项目写成一个后缀为 .reg 的注册文件,再用 Shell 函数调用就可以了。
下面是一个实例。
你将下面的代码复制到记事本,保存为 100.reg 文件(这个文件要保存到你的主程序所在的文件夹):


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Alerter];警示
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser];网络更新列表
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClipSrv];远程查看剪贴板
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dmadmin];配置硬盘驱动器和卷
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache];解析和缓冲DNS名称
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ERSvc];允许错误报告
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\helpsvc];帮助和支持中心
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver];网络打印共享
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation];工作站

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ImapiService];CD烧制
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LmHosts];NetBIOS服务
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Messenger];服务消息
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mnmsrvc];远程桌面
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetDDE];动态数据交换DDE
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetDDEdsdm];DDE网络共享
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon];网域审查
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent];IP安全策略
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RDSessMgr];远程桌面
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess];路由服务
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry];远程修改注册表
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcLocator];RPC名称服务数据库
"Start"=dword:4


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RSVP];占用20%网络带宽的服务
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr];智能卡服务
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule];计划任务
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\seclogon];替换凭据下的启用进程
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler];打印
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\srservice];系统还原
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stisvc];扫描仪和照相机图像捕获
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService];多用户控制一台电脑
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TlntSvr];远程登录
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TrkWks];NTFS文件之间保持链接
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UPS];不间断电源
"Start"=dword:4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient];创建访问和修改Internet文件
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmdmPmSN]
"Start"=dword:3
"Description"="通过联机重新得到任一已转移的媒体的播放序列号,如果本服务被停用,受保护内容将不会下载到该设备上"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv];Windows更新
"Start"=dword:3

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WZCSVC];802.11无线网卡提供自动配置
"Start"=dword:4


(注:"Start"=dword:3 表示手动,"Start"=dword:4 表示禁用)

然后在按纽的单击事件中添加两行代码:

Dim SH As Long
SH = Shell("regedit.exe /s " & App.Path & "\100.reg", 0)

只要单击按纽,就大功告成!

要知道服务的进程ID 就有点复杂了,不是简单的代码所能搞定的。其实,你禁用了服务以后,它就不会运行了,也就没有进程了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册