如何禁用QPCore service启动项?

作者:西城Cheung
链接:https://www.zhihu.com/question/30848564/answer/247452307
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

今天突然发现电脑CPU使用率一直在40%左右波动,打开任务管理器发现是QPCore这个服务一直在占用资源,然后等了一上午使用率一直没有下去,没办法,只能把它手动停止。

下面稍微跑题的回答一下。

如果PC安装运行的是QQ,则毫无办法,服务一停QQ立马闪退。好在我用的是TIM,这个客户端完美兼容QQ,安装后直接能读取之前的QQ聊天记录,并且TIM界面简洁,功能基本只保留沟通办公这些,没有广告,是目前腾讯公司主推的高效办公客户端,(都是腾讯自家产品,我也就勉强打个广告了)。如果不能接受这个客户端来代替QQ,下面的解决方案就不用再看了。

进入正题,我是Win10系统,其他系统没有测试过。

TIM和QQ在QPCore这个服务依赖上是不同的,如果系统运行QQ时停止QPCore,则QQ会闪退,而TIM不会,依然能够正常使用。但是如果把QPCore服务完全禁用的话TIM也无法启动起来了(Can not launch TIM)。如果把这个服务改成手动的话,只要运行一次QQ或者TIM,再去看它又变成自动运行了。

解决思路,服务不能禁用,但可以停止,在cmd界面执行tasklist命令,可以看到有一个QQProtect.exe的进程,然后执行taskkill /f /t /im qqprotect.exe命令,则会终止进程(需要管理员权限),再去看QPCore服务显示已停止,但依然是“自动”。

所以可以通过bat脚本来停止服务。

打开文本文档notepad,输入

taskkill /f /t /im qqprotect.exe

然后保存成nameA.bat文件。

在开始菜单运行taskschd.msc命令,打开任务计划程序,开始创建一个任务计划,每次登录系统时执行脚本,停掉QPCore服务。

点击右侧创建任务,使用最高权限运行。

在“触发器”菜单栏新建触发器,选择“登录时”。

操作部分新建,执行之前写的bat脚本。

建议勾掉,笔记本使用电池时也能执行。

然后确定就好了,可以重启电脑测试,也可以注销当前用户,当再次登录系统的时候,打开服务控制台services.msc查看QPCore服务已经停止了,虽然还是“自动”。

这时候如果你手动启动服务的话是可以启动的,会有一个日志记录下来QPCore服务启动这个事件:

接下来到重点了,如果当前QPCore服务是停止状态,打开TIM客户端的时候,会自动把QPCore服务起来,则日志中同样会有上面那条记录,所以可以创建第二个任务计划,当发生一个事件时执行一个脚本,即QPCore服务启动时紧接着执行一个终止它的脚本。

和上一个任务计划一样,只不过在触发器设置的时候有所不同,参照下图

然后这时候再运行TIM客户端的时候是这样的逻辑:

运行TIM > 触发启动QPCore > 日志记录 > 触发任务计划 > 执行脚本,QPCore又停了。

(TIM和QQ还有一个不同的地方在于如果QPCore服务停止状态时,运行QQ或TIM都会触发启动QPCore服务,但QQ会在服务起来后直接运行,而运行TIM则只会触发启动QPCore服务,不会再运行TIM自身,所以需要第二次运行TIM客户端才能打开登录界面。)

但如果仅仅是这样的话TIM就没办法用了,因为TIM的启动需要QPCore服务运行。所以第二个脚本里需要加一些内容,就是在停止QPCore服务之前把TIM客户端打开,等客户端打开后再关闭服务,然后登录就可以了。

脚本nameB.bat内容如下:

ping 127.0.0.1 > nul -n 2
D:\"Program Files (x86)"\Tencent\TIM\Bin\TIM.exe
ping 127.0.0.1 > nul -n 2
taskkill /f /t /im qqprotect.exe

第一行和第三行是一个延时命令,就是执行这两条命令的时候是一个等待2秒的状态,如果不加这两个延时的话就会进入一个服务无限关闭启动关闭启动的循环状态。第二行是安装路径,右键TIM快捷方式查看属性可以看到。

第二个任务计划“操作”部分采用上述第二个脚本,就可以打开TIM客户端了,此时执行逻辑为:

运行TIM客户端 > 触发启动QPCore服务 > 日志记录 > 触发任务计划 > 执行nameB.bat > 延时2s > 打开TIM客户端 > 延时2s > 停止QPCore服务

有一点需要说明的是在执行bat脚本的时候桌面上是会显示cmd命令窗口界面的,执行完毕后会自动关闭,用bat脚本的话就这样无法避免,不过看起来也没那么糟。如果是用vbs脚本的话就可以避免,但太麻烦了,我也没做。

客户端起来了,登录就可以使用了,再看QPCore服务是停止的。

感觉这么写下来也只有搞IT的能看懂了,希望能帮到更多人吧。