主题:[原创]一个关于停止服务,移除服务对应程序的问题!
傻瓜911
[专家分:150] 发布于 2009-04-24 08:25:00
附件是一个移除服务的代码,目的是移除服务,然后将服务对应的程序删除。现在的代码是停止服务移除服务后,到指定的目录去删除指定的文件,但是如果人家运行程序的时候改了该文件名,那么删除就无效了,代码中的例子是很死板,是知道了该服务对应的程序和路径,然后去删除的。
我现在需要的功能就是根据服务名获取对应的程序名,然后 停止服务,移除服务,然后删除程序。
请问用VB 该怎么实现呢? 我的这代码太长了,应该有更简单的代码的吧? 用net好像也可以吧?
我的功能需求:
根据服务名称,停止该服务,然后删除该服务对应的程序。 请高手指教,高分赠送!代码 网上找的代码,一大堆,乱七八糟的,很多可能都是无用的。嘿嘿!
也可以在这下载代码
http://g0ug0u.shagua911.cn/closeserver.rar
最后更新于:2009-04-24 09:29:00
回复列表 (共4个回复)
沙发
一江秋水 [专家分:9680] 发布于 2009-04-24 08:51:00
没看到你的附件啊?
服务项目都在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,例如ClipSrv服务,它的子键是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClipSrv
在ClipSrv子键中有两个项是你所需要的:DisplayName 和 ImagePath,前者是显示在服务列表中的服务名称,后者是该服务对应的执行文件的路径。
但很多服务的 ImagePath 是 svchost.exe,你可不能删除,万一删了,那...可就要恭喜你发财了!
最好是不要删除文件,只要禁用就可以了,这只要把项Start的数据改为4就行了。
板凳
傻瓜911 [专家分:150] 发布于 2009-04-24 09:30:00
代码http://g0ug0u.shagua911.cn/closeserver.rar
,注册表 俺不熟悉操作 呜呜! 老大,贴代码出来看看! [em4]
3 楼
傻瓜911 [专家分:150] 发布于 2009-04-24 18:02:00
同时还希望能知道该服务对应的 程序如果在运行,那么当前进程ID 是多少!
4 楼
一江秋水 [专家分:9680] 发布于 2009-04-25 08:48:00
如果不熟悉注册表操作,还真不好办。。。这样吧,告诉你一个比较简的方法:
先将你要禁用的服务项目写成一个后缀为 .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 就有点复杂了,不是简单的代码所能搞定的。其实,你禁用了服务以后,它就不会运行了,也就没有进程了。
我来回复