[Python]_[初级]_[修改Windows服务-禁用WIN10的自动更新系统服务部分]

场景

  1. Windows里使用Python做一些自动化管理时, 有时候需要创建,关闭,修改,禁用或删除Windows服务, 而不是通过SC命令来简单处理. 这时候我们就需要pywin32库来调用WIN32的函数来操作.

说明

  1. pywin32是第三方库,需要自己通过pip install pywin32安装,如果提示pip版本过低,可以通过自己去pywin32下载的64位版本的AMD64或32位版本的win32,当然要对应Python本身的版本.我这里例子用的
pywin32-227.win32-py3.7.exe
  1. pywin32还有很多模块,比如shell,pythoncom,win32file,win32gui,win32security等,在安装pywin32好后,会在开始-附件Python3的快捷目录里生成一个Python for Windows Documentation的chm文档,可以方便的看说明,不过缺点就是大概只说了和win32的对应关系,函数的参数细节不多说,如果需要深入了解,需要自己通过bing来搜索,函数名和Win32的一样的,方便搜索.

  2. 注意禁用系统服务要用管理员权限,所以要以管理员权限运行。另外RestoreServiceStartManual函数是用来还原Windows Update服务设置的, 当年希望启用自动更新时.

代码

  1. 以下代码通过停止Windows Update服务,并禁用启动来达到禁用自动更新的目的.
import subprocess
import os
import win32service
import pywintypes

def AddServiceStartForbid(serviceName):
    # SC_MANAGER_ALL_ACCESS

    scHandle = None
    serviceHandle = None

    try:
        scHandle = win32service.OpenSCManager(None,None,win32service.SC_MANAGER_ALL_ACCESS)
        serviceHandle = win32service.OpenService(scHandle,serviceName,win32service.SERVICE_ALL_ACCESS )

        serviceStatus = win32service.QueryServiceStatus(serviceHandle)
        if (serviceStatus[1] != win32service.SERVICE_STOPPED):
            serviceStatus = win32service.ControlService(serviceHandle,win32service.SERVICE_CONTROL_STOP)
        print("serviceStatus: ",serviceStatus)

        win32service.ChangeServiceConfig(serviceHandle,win32service.SERVICE_NO_CHANGE,
            win32service.SERVICE_DISABLED,win32service.SERVICE_NO_CHANGE,None,None,0,None,None,None,None)
        
    except pywintypes.error  as err:
        print("error: ",repr(err))
    finally:
        if serviceHandle != None:
            win32service.CloseServiceHandle(serviceHandle)

        if scHandle != None:
            win32service.CloseServiceHandle(scHandle)

    # subprocess.run(["net","stop",serviceName])
    # subprocess.run(["sc","config",serviceName,"start=","disabled"])
    pass

def RestoreServiceStartManual(serviceName):

    scHandle = None
    serviceHandle = None

    try:
        scHandle = win32service.OpenSCManager(None,None,win32service.SC_MANAGER_ALL_ACCESS)
        serviceHandle = win32service.OpenService(scHandle,serviceName,win32service.SERVICE_ALL_ACCESS )

        win32service.ChangeServiceConfig(serviceHandle,win32service.SERVICE_NO_CHANGE,
            win32service.SERVICE_DEMAND_START,win32service.SERVICE_NO_CHANGE,None,None,0,None,None,None,None)
        
    except pywintypes.error  as err:
        print("error: ",repr(err))
    finally:
        if serviceHandle != None:
            win32service.CloseServiceHandle(serviceHandle)

        if scHandle != None:
            win32service.CloseServiceHandle(scHandle)

   

if __name__ == "__main__":
    
    AddServiceStartForbid("wuauserv")

    # RestoreServiceStartManual("wuauserv")


图1:
在这里插入图片描述

参考

pywin32

win32service

修改服务启动类型

changeserviceconfig

service_status

怎么才能知道组策略中的设置对应于注册表的位置

Win10家庭版系统也能使用组策略

python_ldap-3.4.0-cp310-cp310-win_amd64.whl 是一个Python LDAP模块的二进制文件。它是为64位Windows操作系统Python 3.10版本编译的。LDAP代表轻型目录访问协议,是一种用于访问和维护分布式目录服务的协议。 这个whl文件包含了python-ldap模块的所有必需文件和依赖项,可以通过Python的包管理工具pip进行安装。安装这个模块后,你可以在Python程序中使用它来与LDAP服务器进行交互,实现用户身份验证、目录查询、添加、修改和删除等操作。 要安装这个whl文件,你可以使用以下pip命令: ```bash pip install python_ldap-3.4.0-cp310-cp310-win_amd64.whl ``` 安装完成后,你可以在Python程序中导入python-ldap模块,并开始使用它。例如,你可以连接到LDAP服务器,并搜索特定用户的信息: ```python import ldap # 连接到LDAP服务器 ldap_server = 'ldap://example.com' ldap_username = 'cn=admin,dc=example,dc=com' ldap_password = 'password' conn = ldap.initialize(ldap_server) conn.simple_bind_s(ldap_username, ldap_password) # 搜索用户信息 user_filter = '(uid=john)' base_dn = 'ou=users,dc=example,dc=com' attrs = ['cn', 'email'] result = conn.search_s(base_dn, ldap.SCOPE_SUBTREE, user_filter, attrs) # 打印搜索结果 for dn, entry in result: print('DN: %s' % dn) for attr in attrs: print('%s: %s' % (attr, entry.get(attr))) # 关闭连接 conn.unbind() ``` 通过使用python_ldap模块,你可以轻松地在Python中访问和管理LDAP服务器的目录数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter(阿斯拉达)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值