先放一张搞笑的图2333333
进入正题。。
之前纳闷cpu风扇莫名转的飞快,也没开什么程序,打开任务管理器发现有个Windows update进程一直在运行(有时单独出现,有时在服务主机中),占用cpu和硬盘极高,本以为更新完就没事了,结果一直更新没见停过。。。这就不能忍了,手动关掉了Windows update 服务,见效倒是挺快,但一重启又给自动打开了。尝试了网上各种方法都没法彻底关掉更新服务。
最后想了个损招,写了个禁用更新服务的c++程序,开机自动运行,这几天终于消停了。。
exe程序下载地址:https://pan.baidu.com/s/1Gpk7_LVxXGT1En-L0IQ-3g
不放心的可以用源代码(在最底下)。
注意一定要以管理员方式运行,设置开机自动以管理员方式启动方法:
开始 -> Windows 管理工具 -> 任务计划程序 -> 操作 -> 创建基本任务
点击完成后:
勾选“使用最高权限运行。”,点击确定,over。
源代码:
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
BOOL StopService()
{
SC_HANDLE scm;
SC_HANDLE service;
if((scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS))==NULL)
{
CloseServiceHandle(scm);
printf("OpenSCManager Fail %d\n",GetLastError());
return 0;
}
service=OpenService(scm, "wuauserv",SERVICE_ALL_ACCESS);
if(service == NULL)
{
int c = GetLastError();
if (c == ERROR_ACCESS_DENIED) cout<<"ERROR_ACCESS_DENIED\n";
else if (c == ERROR_INVALID_HANDLE) cout<<"ERROR_INVALID_HANDLE\n";
else if (c == ERROR_INVALID_NAME) cout<<"ERROR_INVALID_NAME\n";
else if (c == ERROR_SERVICE_DOES_NOT_EXIST) cout<<"ERROR_SERVICE_DOES_NOT_EXIST\n";
CloseServiceHandle(service);
CloseServiceHandle(scm);
return 0;
}
SERVICE_STATUS status;
if(QueryServiceStatus(service,&status)){
if(status.dwCurrentState!=SERVICE_STOPPED) { //如果服务当前状态为启用
ControlService(service,SERVICE_CONTROL_STOP,&status);
SC_LOCK sclLockA;
sclLockA = LockServiceDatabase(scm);
if (sclLockA != NULL){
if (! ChangeServiceConfig(
service, // handle of service
SERVICE_NO_CHANGE, // service type: no change
SERVICE_DISABLED, // 禁用服务
SERVICE_NO_CHANGE, // error control: no change
NULL, // binary path: no change
NULL, // load order group: no change
NULL, // tag ID: no change
NULL, // dependencies: no change
NULL, // account name: no change
NULL, // password: no change
NULL)) //displayname
{
}
}
UnlockServiceDatabase(sclLockA);
}
else
{
SC_LOCK sclLockB;
sclLockB = LockServiceDatabase(scm);
if (sclLockB != NULL){
if (! ChangeServiceConfig(
service, // handle of service
SERVICE_NO_CHANGE, // service type: no change
SERVICE_DISABLED, // 这里做了更改
SERVICE_NO_CHANGE, // error control: no change
NULL, // binary path: no change
NULL, // load order group: no change
NULL, // tag ID: no change
NULL, // dependencies: no change
NULL, // account name: no change
NULL, // password: no change
NULL)) //displayname
{
}
}
UnlockServiceDatabase(sclLockB);
}
CloseServiceHandle(service);
CloseServiceHandle(scm);
}
cout<<"stop service success!\n";
return TRUE;
}
int main()
{
StopService();
system("pause");
return 0;
}