美文网首页
Windows update 进程占用CPU和硬盘终极解决方案

Windows update 进程占用CPU和硬盘终极解决方案

作者: 接骨木go | 来源:发表于2018-05-27 18:16 被阅读0次

    先放一张搞笑的图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;
    }  
    

    相关文章

      网友评论

          本文标题:Windows update 进程占用CPU和硬盘终极解决方案

          本文链接:https://www.haomeiwen.com/subject/rdxijftx.html