通过查找相关资料,总结了一下python用WMI等获取windows系统信息以及修改系统的相关配置,代码如下(附件中有本代码附件):

#-*- coding:utf-8 -*-

import time
import datetime
import re
import subprocess
import sys
import wmi
import os
import ConfigParser
import _winreg
import win32net
import win32api
import win32con
import win32netcon
import win32security

#DEBUG=True
#DEBUG=False
#LOGFILE=r'c:\win.log'
TIME_FORMAT=r'%Y-%m-%d %H:%M:%S'

#c=wmi.WMI(privileges=["Admin","Shutdown","Security"])

#实例化wmi类
c=wmi.WMI()

#定义myWmi类并返回实例化对象
class myWmi(object):
    #定义构造器
    def __init__(self,wmiclass,info={},name=""):
        if name:
            self.obj=wmiclass(Name=name)
        else:
            self.obj=wmiclass()
        self.info=info
        return self.obj

#定义myOs类用于系统信息查询及设置
class myOs(object):
    #定义构造器
    def __init__(self,wmiobj=c,info={}):
        #创建wmi实例
        self.obj=wmiobj.Win32_OperatingSystem()[0]                                          #用于获取计算机运行环境信息
        self.cobj=wmiobj.Win32_ComputerSystem()[0]                                          #用于获取计算机CPU数量,内存大小,主板相关信息
        self.disk_obj= wmiobj.Win32_DiskDrive()                                             #用于获取硬盘相关信息
        self.Partition_obj= wmiobj.Win32_LogicalDisk()                                      #用于获取分区相关信息
        self.networkAdapter_obj = wmiobj.Win32_NetworkAdapterConfiguration (IPEnabled=1)    #用于配置及获取网络连接相关信息
        self.process_obj = wmiobj.Win32_Processor()[0]                                      #用于获取CPU详细信息
        self.update_obj = wmiobj.Win32_QuickFixEngineering()                                #用于获取windows更新补丁相关信息
        self.info=info                                                                      #定义用于存放配置信息的字典

def get_os_info(self):
        """
                    返回系统相关信息
        """
        self.info["os"]=self.obj.Caption                                                                                         #获取系统版本
        self.info["version"]=self.obj.CSDVersion                                                                                 #操作系统更新版本
        self.info["fullname"]=self.obj.CSName                                                                                    #获取计算机名
        self.info["localtime"]=datetime.datetime.strptime(str(str(self.obj.LocalDateTime ).split('.')[0]),'%Y%m%d%H%M%S')        #获取系统本地时间
        self.info["lastboottime"]=datetime.datetime.strptime(str(str(self.obj.LastBootUpTime ).split('.')[0]),'%Y%m%d%H%M%S')    #获取系统上次启动时间
        self.info["os_architecture"]=self.obj.OSArchitecture                                                                     #获取操作系统类型(32bit/64bit)
        self.info["mu_languages"]=self.obj.MUILanguages[0]                                                                       #获取操作系统语言版本
        self.info["SerialNumber"]=self.obj.SerialNumber                                                                          #获取操作系统序列号
        self.info["cpu_count"]=self.cobj.NumberOfProcessors                                                                      #获取cpu数量
        self.info["mainboard"]=self.cobj.Manufacturer                                                                            #获取主板厂商信息
        self.info["board_model"]=self.cobj.Model                                                                                 #获取主板型号
        self.info["systemtype"]=self.cobj.SystemType                                                                             #获取主板架构类型
        self.info["physical_memory"]=int(self.cobj.TotalPhysicalMemory)/1024/1024                                                #获取内存容量
        self.info["cpu_name"] = self.process_obj.Name                                                                            #获取cpu类型
        self.info["clock_speed"] = self.process_obj.MaxClockSpeed                                                                #获取操作系统主频
        self.info["number_core"] = self.process_obj.NumberOfCores                                                                #获取核心数量
        self.info["data_width"] = self.process_obj.DataWidth                                                                     #获取计算机的CPU数据宽度
        self.info["socket_desigination"] = self.process_obj.SocketDesignation                                                    #获取主板cpu接口类型
        self.info["l2_cache"] = self.process_obj.L2CacheSize                                                                     #获取cpu二级缓存大小
        self.info["l3_cache"] = self.process_obj.L3CacheSize                                                                     #获取cpu三级缓存大小
        return self.info

#打印补丁更新信息
    def update_information(self):
        output=open(log_path,"a+")
        output.write('\n')
        output.write('[Update information]\r\n')
        for s in self.update_obj:
            output.write('%-10s %-10s %-20s %-10s\n' %(s.HotFixID,s.InstalledOn,s.Description,s.InstalledBy))
        output.write('\n')
    #打印磁盘信息
    def get_diskinfo(self):
        for item in self.disk_obj:
            output=open(log_path,"a+")
            output.write('\n')
            output.write('[disk info]\r\n')
            for item in self.disk_obj:
                output.write('%-25s Partition: %-3s SN: %-30s %-3sG\n' %(item.Caption,str(item.Partitions),item.SerialNumber,str(int(item.Size)/1024/1024/1024)))
                #output.write('%-30s Partition: %-5s SN: %-30s %-10s G\n' %(item.Caption,str(item.Partitions),item.SerialNumber,str((item.Size)/1024/1024/1024)))
                output.write('\n')
            break

#打印磁盘分区信息
    def get_partitioninfo(self):
        Partition_count = len(self.Partition_obj)
        output=open(log_path,"a+")
        output.write('\n')
        output.write('[Partition info]\r\n')
        output.write('\r\n')
        for x in range(len(self.Partition_obj)):
                if self.Partition_obj[x].DriveType == 3:
                    output.write('DeviceID = %-4s FileSystem = %-5s TotalSize = %-1sG    FreeSpace = %-1sG\n' %(self.Partition_obj[x].DeviceID,self.Partition_obj[x].FileSystem,str(int(self.Partition_obj[x].Size)/1024/1024/1024),str(int(self.Partition_obj[x].FreeSpace)/1024/1024/1024)))
                    output.write('\n')

#打印网络配置信息
    def get_networkadapter(self):
        output=open(log_path,"a+")
        output.write('\n')
        output.write('[network info]\r\n')
        for interface in self.networkAdapter_obj:
            output.write('IP Address:  %-10s\n' %interface.IPAddress[0])
            output.write('NET Mask:    %-10s\n' %interface.IPSubnet[0])
            output.write('Gateway:     %-10s\n' %interface.DefaultIPGateway)
            output.write('Pri DNS:     %-10s\n' %str(interface.DNSServerSearchOrder[0]))
            output.write('Sec DNS:     %-10s\n' %str(interface.DNSServerSearchOrder[1]))
            output.write('Real Mac:    %-10s\n' %interface.MACAddress)
            output.write('\n')
            break

#强制关机
    def win32shutdown(self):
        self.obj.Win32Shutdown()

#重启操作系统
    def reboot(self):
        self.obj.Reboot()

#关闭操作系统
    def shutdown(self):
        self.obj.Shutdown()

#定义network_config类用于网络设置信息查询及设置
class network_config(object):
    #定义构造器
    def __init__(self,wmiobj=c):
        #实例化对象
        self.obj = wmiobj.Win32_NetworkAdapterConfiguration

#设置LMHOSTS
    def config_setup(self):
        self.obj.EnableWINS(WINSEnableLMHostsLookup=False)

#设置dns
    def tcp_config(self):

interfaces = c.Win32_NetworkAdapterConfiguration(IPEnabled=True)
        device_count = len(interfaces)
        start_num = 0
        dns = ['202.106.196.115','202.106.0.20']
        while True:
            for first_if in interfaces:
                dns_result = first_if.SetDNSServerSearchOrder(DNSServerSearchOrder = dns)
                netbios_result = first_if.SetTcpipNetbios(TcpipNetbiosOptions = 2)
                start_num += 1
                if start_num > device_count:
                    break
            return dns_result,netbios_result

#############################
#                           #
#   Service                 #
#                           #
#############################

#定于myService()类用于系统服务检查及设置
class myService(object):
    """
    control system service
    """
    #定义构造器
    def __init__(self,name="",wmiobj=c,**kargs):
        self.name=name
        kargs={}
        args=""
        if self.name:
            self.obj=wmiobj.Win32_Service(Name=self.name)[0]    #obj in the list
        elif kargs:
            for key in kargs:
                args+=key+'='+'"'+kargs[key]+'"'+','
            args=args[:-1]
            cmd="wmiobj.Win32_Service("+args+")"
            self.obj=eval(cmd)
        else:
            self.obj=wmiobj.Win32_Service()

def get_service_info(self):
        service_list=[]
        for ser in self.obj:
            service_dict={}
            service_dict["name"]=ser.Name
            service_dict["displayname"]=ser.Caption
            service_dict["pid"]=ser.ProcessID
            service_dict["stat"]=ser.State
            service_dict["startmode"]=ser.StartMode
            service_list.append(service_dict)
        return service_list

#获取系统服务状态
    def status(self):
        return self.obj.State

#启动服务
    def start(self):
        self.obj.StartService()

#停止服务
    def stop(self):
        self.obj.StopService()

#关闭黑名单中系统服务
    def change_mode(self,mode):
        blacklist_path = sys.path[0]+'/data/svr_blacklist.txt'
        f=open(blacklist_path)
        svr_blacklist = f.readlines()
        f.close()

for b in svr_blacklist:
            b = b.strip()
            for s in self.obj:
                if  b in s.Name:
                    """
                    Three mode available: Auto, Manual and Disabled
                    """
                    s.ChangeStartMode(mode)
                else:
                    continue
            break
        #obj.ChangeStartMode(mode)

#删除系统服务
    def delete(self):
        print "You should not delete a service, stop it instead."

#############################
#                           #
#   Process                 #
#                           #
#############################
#定义myProcess类用于进程查看
class myProcess(myWmi):
    def __init__(self,name=""):
        self.name=name
        myWmi.__init__(self,c.Win32_Process,name=self.name)

def get_process_info(self):
        processlist=[]
        for process in self.obj:
            processlist.append((process.ProcessID,process.Name,process.CreationDate,process.ExecutablePath,process.Caption))
        return processlist

def get_process_owner(self):
        return self.obj[0].GetOwner()

def terminate(self):
        self.obj[0].Terminate()

#############################
#                           #
#   Software                #
#                           #
#############################
#定义mySoft类用于安装软件检查
class mySoft(myWmi):
    def __init__(self,name=""):
        self.name=name
        myWmi.__init__(self,c.Win32_Product,name=self.name)

def get_software(self):
        softlist=[]
        for soft in self.obj:
            softlist.append((soft.Name,soft.InstallDate))
        return softlist

def uninstall(self):
        #self.obj[0].Uninstall()
        pass

#############################
#                           #
#      User and Group       #
#                           #
#############################
'''
def dump(dict):
    for key,value in dict.items():
        print key,"=",str(value)'''

#定义myAccount类用于帐号检查及设置
class myAccount(myWmi):
    #类构造器
    def __init__(self,name="",group=""):
        self.uname=name
        self.gname=group
        self.uobj=myWmi.__init__(self,c.Win32_UserAccount,name=self.uname)
        self.guobj=myWmi.__init__(self,c.Win32_GroupUser,name=self.gname)
   #返回账户列表
    def show_user_list(self):
        ulist=[]
        for user in self.uobj:
            ulist.append(user.Name)
        return ulist
    #返回禁用的账户列表
    def show_user_info(self,username):
        info=win32net.NetUserGetInfo(None,username,3)

info["disabled"]=user.Disabled      #Disabled is true means the account is disabled.
        info["status"]=user.Status
        return ulist
    #返回用户组
    def show_user_in_group(self):
        gulist={}
        for gu in self.guobj:
            if gu.GroupComponent.Name not in gulist:
                gulist[gu.GroupComponent.Name]=[gu.PartComponent.Name]
            else:
                gulist[gu.GroupComponent.Name].append(gu.PartComponent.Name)
        return gulist
    #返回管理员用户列表
    def show_userlist_admin(self):
        uresume = 0
        while True:
            admin_list = []
            users, total, uresume = win32net.NetLocalGroupGetMembers (None, 'Administrators', 0, uresume)
            for sid in (u['sid'] for u in users):
                username, domain, type = win32security.LookupAccountSid (None, sid)
                admin_list.append(username)
            return admin_list
            if uresume == 0:
                break
    #获取当前用户
    def get_current_user(self):
        return win32api.GetUserName()
    #删除用户
    def delete_user(self,username):
        win32net.NetUserDel(None,username)
    #添加用户
    def add_user(self,name,passwd,flags=win32netcon.UF_NORMAL_ACCOUNT|win32netcon.UF_SCRIPT,privileges=win32netcon.USER_PRIV_ADMIN):
        udata={}    #user info dict, can be gotten by win32net.NetUserGetInfo
        udata["name"]=name
        udata["password"]=passwd
        udata["flags"]=flags
        udata["priv"]=privileges
        win32net.NetUserAdd(None, 1, udata)
   #设置用户信息
    def modify_user(self,username,udict,level=2):
        win32net.NetUserSetInfo(None,username,level,udict)
    #修改用户密码
    def change_passwd(self,username,oldpass,newpass):
        win32net.NetUserChangePassword(None,username,oldpass,newpass)

#重命名账户
    def rename_user(self,oldname,newname):
        for item in self.uobj:
            if oldname in item.id:
                item.Rename('admin')
            else:
                continue

#############################
#                           #
#   Registry                #
#                           #
#############################

#定义myRegistry类用于注册表项目检查及设置
class myRegistry(object):
    """
    #print myRegistry().get_value(win32con.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users','Names')
    #myRegistry().add_key(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG')
    #print myRegistry().list_keys(_winreg.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users\Names')
    #myRegistry().add_value(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG','AtionName','TJ7PP')
    #myRegistry().delete_value(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG','AtionName')
    #myRegistry().delete_key(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG')
    #print myRegistry().get_value(_winreg.HKEY_LOCAL_MACHINE,r'SOFTWARE\Tracker Software\pdfxctrl.PdfPrinterPreferences','XCL_PATH')
    """
    #定义构造函数
    def __init__(self):
        #self.obj=wmi.Registry()
        self.obj=wmi.WMI(namespace='DEFAULT').StdRegProv

#列出注册表项
    def list_keys(self,root,subkey):
        result,names=self.obj.EnumKey(hDefKey=root,sSubKeyName=subkey)
        if result == 2:
            print "No such keys"
        return names

#返回对应注册表项键值
    def get_value(self,root,subkey,valuename,type="string"):
        if type == "string":
            result,value = self.obj.GetExpandedStringValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename)
        elif type == "dword":
            result,value = self.obj.GetDWORDValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename)
        else:
            result,value = self.obj.GetBinaryValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename)
        return value

#添加注册表项
    def add_key(self,root,subkey):
        return self.obj.CreateKey(hDefKey=root,sSubKeyName=subkey)

#old value can be overwritten
    #设置键值
    def set_value(self,root,subkey,valuename,value,type):
            if type == "string":
                    value = self.obj.SetStringValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename,sValue=value)
            else:
                    value = self.obj.SetDWORDValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename,uValue=value)
            return value
    #删除注册表项
    def delete_key(self,root,subkey):
        return self.obj.DeleteKey(root,subkey)
    #删除键值
    def delete_value(self,root,subkey,valuename):
        return self.obj.DeleteValue(root,subkey,valuename)

#获取注册表中用户列表
def get_sys_sid():
    reg_user_list = myRegistry().list_keys(_winreg.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users')
    sid_admin = u'000001F4'
    reg_user_list.remove(sid_admin)
    length =len(reg_user_list)
    key_list = []
    raw_pattern = re.compile(r'^00000')
    n = 0
    while True:
        for m in reg_user_list:
            if raw_pattern.match(m):
                n += 1
                if n < length:
                    key_list.append(m)
                else:
                    break
        break
    return key_list

#检查克隆账户
def chk_clone_account():
    a = get_sys_sid()
    sid_value = myRegistry().get_value(_winreg.HKEY_LOCAL_MACHINE, r'SAM\SAM\Domains\Account\Users\000001F4', r'F','')
    #print sid_value
    #检查SID值是否为管理员SID值
    for each_value in a:
        path = 'SAM\SAM\Domains\Account\Users\\'+ each_value
        key_value = myRegistry().get_value(_winreg.HKEY_LOCAL_MACHINE,path, r'F','')
        if sid_value == key_value:
            #print 'Clone Account SID is %s' %each_value
            return True
        else:
            continue
    #检查注册表项中是否有隐藏帐号
    reg_user_list=myRegistry().list_keys(_winreg.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users\Names')

ulist = myAccount().show_user_list()
    for user in reg_user_list:
        if user not in ulist:
            #print 'Clone Account is %s' %user
            return True

#############################
#                           #
#        Win_Base_setup     #
#                           #
#############################
#定义win_Base类用于系统基本配置
class win_Base():
    #实例化
    def __init__(self):

#?????ᄅW??????
        self.cf=ConfigParser.ConfigParser()
        self.cf.read(sys.path[0]+'/data/win_reg.ini')

#根据win_reg.ini中读取到的配置选项,修改对应注册表项及对应键值
    def win_setup(self):

#???????ᄅW??
        section_start = 0
        section_count = len(self.cf.sections())
        section_item = self.cf.sections()
        for user in section_item:
            while True:
                for user in section_item:

#?????ᄅW???ᄅW??????????
                    name = self.cf.get(user,"root")
                    subkey = self.cf.get(user,"sub_key")
                    valuename = self.cf.get(user,"value_name")
                    regtype = self.cf.get(user,"reg_type")
                    #???????ᄀ↑????
                    if name == 'HKEY_LOCAL_MACHINE':
                        a = _winreg.HKEY_LOCAL_MACHINE
                    elif name == 'HKEY_CLASSES_ROOT':
                        a = _winreg.HKEY_CLASSES_ROOT
                    elif name == 'HKEY_CURRENT_USER':
                            a = _winreg.HKEY_CURRENT_USER
                    else:
                        return name
                    #??????????
                    if regtype == "dword":
                        value = int(self.cf.get(user,"value"))
                    else:
                        value = self.cf.get(user,"value")
                    #???????ᄀ↑????

myRegistry().add_key(a,subkey)

myRegistry().set_value(a,subkey,valuename,value,regtype)

section_start += 1
                    if section_start == section_count:
                        break

#############################
#                           #
#   Startup                 #
#                           #
#############################

#定义show_startupcommand类用于系统启动项目检查
def show_startupcommand():
    startup_list=[]
    obj=c.Win32_StartupCommand()
    for s in obj:
        startup_info = {}
        startup_info['Name'] = s.Name
        startup_info['Command'] = s.Command
        #startup_info['Location'] = s.Location
        #startup_info['User'] = s.User
        startup_list.append(startup_info)
        #if s.Command not in startup_list:
        #    start_value = s.Command + ' ' + s.Location
        #    startup_list.append((start_value))
    return startup_list
    '''startup_list=[]
    obj=c.Win32_StartupCommand()
    for s in obj:
        if s.Command not in startup_list:
            start_value = s.Command + ' ' + s.Location
            startup_list.append((start_value))
    return startup_list'''

#############################
#                           #
#   Audit Log               #
#                           #
#############################
def reg(string):
    """
instance of Win32_NTLogEvent
{
    Category = 9;
    CategoryString = "Account Logon";
    ComputerName = "MICROSOF-5524EC";
    EventCode = 680;
    EventIdentifier = 680;
    EventType = 5;
    InsertionStrings = {"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0", "joe", "MICROSOF-5524EC", "0xC000006A"};
    Logfile = "Security";
    Message = "Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
\n
\nLogon account:  joe
\n
\nSource Workstation: MICROSOF-5524EC
\n
\nError Code: 0xC000006A
\n
\n";
    RecordNumber = 16267;
    SourceName = "Security";
    TimeGenerated = "20100424000915.000000+480";
    TimeWritten = "20100424000915.000000+480";
    Type = "audit failure";
    User = "NT AUTHORITY\\SYSTEM";
};

instance of Win32_NTLogEvent
{
    Category = 2;
    CategoryString = "Logon/Logoff";
    ComputerName = "MICROSOF-5524EC";
    EventCode = 529;
    EventIdentifier = 529;
    EventType = 5;
    InsertionStrings = {"joe", "MICROSOF-5524EC", "2", "Advapi  ", "Negotiate", "MICROSOF-5524EC"};
    Logfile = "Security";
    Message = "Logon Failure:
\n
\n\tReason:\t\tUnknown user name or bad password
\n
\n\tUser Name:\tjoe
\n
\n\tDomain:\t\tMICROSOF-5524EC
\n
\n\tLogon Type:\t2
\n
\n\tLogon Process:\tAdvapi
\n
\n\tAuthentication Package:\tNegotiate
\n
\n\tWorkstation Name:\tMICROSOF-5524EC
\n";
    RecordNumber = 16251;
    SourceName = "Security";
    TimeGenerated = "20100423091037.000000+480";
    TimeWritten = "20100423091037.000000+480";
    Type = "audit failure";
    User = "NT AUTHORITY\\SYSTEM";
};

regex=re.compile(r'(User Name|Logon account):\s*\w*')
    r=re.search(regex,string)
    if r:
        return r.group()
    else:
        return 0

class myAuditLog():
    def __init__(self):
        cc=wmi.WMI(privileges=["Security"])
        self.obj=cc.Win32_NTLogEvent()

#type'll be success or failure.
    def get_history(self,type):
        log_type={'success':4,'failure':5}
        s_log=[]
        for s in self.obj:
            if s.EventType == log_type[type]:
                m=reg(s.Message)
                if m:
                    s_log.append(s.CategoryString+', '+reg(s.Message)+', '+s.TimeWritten+', '+s.Type)
        return s_log"""

#############################
#                           #
#        Share              #
#                           #
#############################
#定义myShare类用于共享检查及设置
class myShare(myWmi):
    def __init__(self,name=""):
        myWmi.__init__(self,c.Win32_Share)

def show_share(self):
        share_list=[]

for s in self.obj:
            item_str = s.Name + ' ' +s.Path
            share_list.append(item_str)
            #print s.Name,'\t',s.Path
        return share_list

def delete(self):
        for s in self.obj:
            s.Delete()

"""def mycmd(cmd):
    try:
        p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        (stdoutput,erroutput)=p.communicate()
    except OSError:
        print "command %s wrong, check the command please!" % cmd
    return (stdoutput,erroutput)"""

def log(log_file,log_string,description):
    try:

f=open(log_file,'a+')
        #f.write(time.strftime(TIME_FORMAT))
        f.write(description + '\n')
        f.write(str(log_string))
        f.write('\n\n')
        #f.write(time.strftime(TIME_FORMAT)+' '+log_string+'\n')
        f.close()
    except IOError,e:
        print e
        #print "Can't open log file %s." % log_file
        sys.exit()

def log_server(log_file,log_string):
    try:
        f=open(log_file,'a+')
        f.write(str(log_string))
        f.close()
    except IOError,e:
        print e
        #print "Can't open log file %s." % log_file
        sys.exit()

if __name__=='__main__':

#log_path = sys.path[0]+'/data/win.log'
    log_path = r'c:\win.log'

#网络配置
    network_config().config_setup()
    network_config().tcp_config()

#系统服务设置
    myService().change_mode('disabled')

#基础配置
    win_Base().win_setup()

#重命名管理员账户
    t = myAccount()
    if 'Administrator' in t.show_userlist_admin():
        t.rename_user('administrator','admin')
    elif 'admin' in t.show_userlist_admin():
        print 'user_admin has been chanaged!'
    else:
        print t.show_userlist_admin()

print 'Windows base setup has finished!!'

#帐号列表
    t =  myAccount().show_user_list()
    output=open(log_path,"a+")
    output.write('[Account List]\n')
    for user in t:
        output.write('Windows Account is %s\n' %user)
    output.write('\n')

#系统服务
    t = myService().get_service_info()

'''item_count  = len(t)
    n = 0
    log_server(log_path,'[Service List]\n')

while True:
        for item in t:
            item_value = '<' +str(item['pid'])+ '> <' + item['stat']+ '> <' + item['displayname']+ '>  <' + item['name'] + '> <' + item['startmode']+ '>'+'\n'
            log_server(log_path,item_value)
            n += 1
            if n > item_count:
                break
        break
    log_server(log_path,'\n')'''

output=open(log_path,"a+")
    output.write('\n')
    output.write('[Server List]\n')
    for item in t:
        output.write('%-35s %-60s %-5s %-8s %-10s \n' %(item['name'],item['displayname'],item['pid'],item['stat'],item['startmode']))
    output.write('\n')

#系统启动项列表
    t = show_startupcommand()
    output=open(log_path,"a+")
    output.write('\n')
    output.write('[Startup_List]\n')
    for item in t:
#        output.write('%-18s %-20s %-s \n' %(item['Name'],item['Command'],item['Location']))
        output.write('%-20s %-s \n' %(item['Name'],item['Command']))
    output.write('\n')
    '''n = 0
    item_count = len(t)
    log_server(log_path,'[Start up]\n')
    while True:
        for item in t:
            item_value = '<' + item +  '>' + '\n'
            log_server(log_path,item_value)
            n += 1
            if n > item_count:
                break
        break
    log_server(log_path,'\n')'''

#共享模块
    t = myShare().show_share()

output=open(log_path,"a+")
    output.write('[Share Information]\n')
    for user in t:
        output.write('Share item is %s\n' %user)
    output.write('\n')

#系统信息检查

t = myOs().get_os_info()
    output=open(log_path,"a+")
    output.write('\n')
    output.write('[OS Information]\n')
    for m in t.keys():
        output.write("%-20s: %-s\n" %(m,t[m]))
    output.write('\n')

'''
    log_server(log_path,'[OS Information]\n')
    item_value = '<' + str(t['fullname'])+ '> <' + str(t['version'])+ '> <'  + str(t['lastboottime']) + '>' + '\n'
    log_server(log_path,item_value)
    log_server(log_path,'\n')'''

#Windows 更新补丁检查
    myOs().update_information()
    #/*********Windows安全检查***************/
    #克隆帐号检查
    t = chk_clone_account()
    if chk_clone_account():
        Item_value = 'Account has been clone!\n'
        log_server(log_path,'[Clone Account Check]\n')
        log_server(log_path,Item_value)
        log_server(log_path,'\n')
    else:
        Item_value = 'Account has not clone!\n'
        log_server(log_path,'[Clone Account Check]\n')
        log_server(log_path,Item_value)
        log_server(log_path,'\n')

#系统服务设置
    output=open(log_path,"a+")
    toclose=[]
    blacklist_path = sys.path[0]+'/data/svr_blacklist.txt'
    f=open(blacklist_path)
    svr_blacklist = f.readlines()
    f.close()
    s=myService()
    svr_stat=s.get_service_info()
    #print svr_blacklist
    #print svr_stat
    for b in svr_blacklist:
      b=b.strip()
      for svr in svr_stat:
        if svr["name"] == b and svr["startmode"] != "Disabled":
          toclose.append(b)
    #output.write('*'*50+'\r\n')

output.write('[Service check]\r\n')
    #output.write('*'*50+'\r\n')
    for s in toclose:
      output.write("%s should be disabled\r\n" % s)

#磁盘信息
    myOs().get_diskinfo()

#磁盘分区信息
    myOs().get_partitioninfo()

#网卡信息
    myOs().get_networkadapter()

#系统进程列表

t = myProcess().get_process_info()
    output=open(log_path,"a+")
    output.write('\n')
    output.write('[System processlist]\r\n')
    for x in t:
        if x[2] != None:
            output.write('%-22s %-5s %-20s %-s\n' %(x[1],x[0],datetime.datetime.strptime(str(str(x[2]).split('.')[0]),'%Y%m%d%H%M%S'),x[3]))
    output.write('\n')

#系统服务设置

#toclose=[]
    blacklist_path = sys.path[0]+'/data/svr_blacklist.txt'
    f=open(blacklist_path)
    svr_blacklist = f.readlines()
    f.close()
    for b in svr_blacklist:
        b = b.strip()
        myService().change_mode(b,'Disabled')
    print 'Windows check has finished!!'
    sys.exit

python用WMI等获取及修改windows系统信息相关推荐

  1. [Python黑帽] 一.获取Windows主机信息、注册表、U盘历史痕迹和回收站文件

    最近开始学习网络安全和系统安全,接触到了很多新术语.新方法和新工具,作为一名初学者,感觉安全领域涉及的知识好广.好杂,但同时也非常有意思.这系列文章是作者学习安全过程中的总结和探索,我们一起去躺过那些 ...

  2. import _winreg:用python操作修改windows注册表

    用python操作修改windows注册表,显然要比用C或者C++简单. 主要参考资料:官方文档:http://docs.python.org/library/_winreg.html 通过 pyth ...

  3. 【python】必应api获取壁纸信息+修改桌面+倒计时显示

    1.0版本 一.获取壁纸路径 使用request对必应壁纸的api进行访问,获取图片路径,并下载到本地,api地址的说明参考:starsion大佬的文章 顺便做了个封装,代码如下所示: 其中: 1.d ...

  4. Python使用WMI获取主板和CPU序列号

    2019独角兽企业重金招聘Python工程师标准>>> 安装wmi pip install pywin32 pip install wmi 代码 import wmi c = wmi ...

  5. python利用 WMI 库操作windows

    转载自 http://python.jobbole.com/86349/ 最近在网上搜索Python和WMI相关资料时,发现大部分文章都千篇一律,并且基本上只说了很基础的使用,并未深入说明如何使用WM ...

  6. python利用WMI监控windows状态如CPU、内存、硬盘

    安装pywin32库 下载地址: https://sourceforge.net/projects/pywin32/files%2Fpywin32/ 选择对应python版本的文件. 下载后在wind ...

  7. python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;

    python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间.内存使用量.内存占用率.PID.名称.创建时间等: psutil模块可以跨平台使用,支持Linux/ ...

  8. Python获取Linux或Windows系统的基本信息

    前段时间写了一篇博文名为<利用Python脚本获取Windows和Linux的系统版本信息>,本篇博文利用这篇文章中的知识提供一个增强版本的获取信息的Python脚本.执行后,看起来就像登 ...

  9. python获取文件修改时间并比较_python获取文件创建和修改时间

    运行环境 : python 3.6.0' # 获取文件的时间属性 # 用到的知识 # os.getcwd() 方法用于返回当前工作目录 # os.path.getatime(file) 输出文件访问时 ...

最新文章

  1. SAP EWM - 物料主数据 - EWM系统存储视图属性
  2. sql server 用户'sa'登录失败(错误18456)
  3. 如何去找一些还没有完全上市的 在私募投资的公司 D轮左右 财经媒体
  4. windows api 枚举进程pid
  5. spark之12:集群模式概述
  6. atom feed_适用于Atom Feed的Spring MVC
  7. 反转一个单链表,分别以迭代和递归的形式来实现
  8. 用PaddlePaddle(飞桨)实现minist数据集的GAN生成
  9. PHP生成有背景的二维码图,摘自网络
  10. Coursera营养学课程考试小抄
  11. 1007 素数对猜想 (20 分)—PAT (Basic Level) Practice (中文)
  12. Monkey 命令 基本参数介绍
  13. android 评论发表情,安卓微信朋友圈怎么评论发表情包 微信朋友圈评论发表情包方法...
  14. 计算机中模拟和数字信号,模拟信号和数字信号的区别是什么
  15. 最简单、最傻瓜化的虚拟主机管理软件-LuManager主机管理系统
  16. 楚留香服务器维护时间,2019年8月9日官方维护公告
  17. 一键领取php,新款引流必备一键领取名片赞PHP单页源码
  18. mmdection的安装、测试,心酸历程
  19. torch对于tensor的常规操作
  20. 简介一些黑盒测试的方法

热门文章

  1. 吞吐量达到瓶颈后下降_如何找到 Kafka 集群的吞吐量极限?
  2. thinkjs-定时任务
  3. tf.trainable_variables() and tf.all_variables()
  4. 前端监控和前端埋点方案设计--摘抄
  5. WAMP安装提示缺少 msvcr100.dll文件解决方法
  6. web.xml 配置中classpath: 与classpath*:的区别
  7. MYSQL的随机抽取实现方法
  8. 两道与二进制有关的sequence
  9. Word转PDF及SWF在线浏览——Flash Paper
  10. 上海肯特选用Ultimus 提升企业管理