技术标签: Python
在日常使用Chrome经常遇到风扇突然狂转的问题,网上搜了一下才发现Chrome目录下会有这样一个程序software_reporter_tool.exe在狂吃CPU(文件位置一般在C:\Users\name\AppData\Local\Google\Chrome\User Data\SwReporter\42.206.200\software_reporter_tool.exe)
网上给出的解决方案是,删掉文件,然后用一个同名文件夹占位就行了。
结果好景不长,隔了一段时间Chrome自动更新了,路径变了,比如"SwReporter\42.212.200",可恶的software_reporter_tool.exe又出现了。
每次遇到问题,都去手动结束进程,然后去替换文件夹比较烦(平时有登陆不同账号多开Chrome的需求,所以Chrome不止一个),于是便想每次遇到问题的时候,能不能直接用python一步解决。
所以就写了下面代码:
大概思路就是,申请管理员权限,结束所有正在运行的software_reporter_tool.exe进程,找到进程对应的路径,删除该文件,创建文件夹占位。
执行后效果如下:
from __future__ import print_function
import os
import sys
import subprocess
import locale
import time
import ctypes
'''
Author:https://blog.csdn.net/watfe
Date:2019-08-21
'''
# pyinstaller -F kill_Chrome_software_reporter_tool.exe.py
banner = '''
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
解决software_reporter_tool.exe高占用问题
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
使用方法:
当打开Chrome发现有风扇狂响 或 Win任务管理器中有software_reporter_tool.exe在运行时
双击快捷方式运行,即可完成优化
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'''
print(banner)
def cmd(command):
# 执行cmd命令
result = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE)
out,err = result.communicate()
return out
def is_admin():
# 获取管理员权限
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
filename = 'software_reporter_tool.exe'
try:
if is_admin():
# 可能用到管理员权限执行的部分写在这里
# 取当前系统代码表,也就是编码格式。
l_name, l_code = locale.getdefaultlocale()
# 查找是否存在该进程
out = cmd('wmic process where name="'+filename +
'" get processid,executablepath,name')
# 找到进程对应的路径
filepath = []
for i in out.decode(l_code).split('\n'):
if filename in i:
filepath.append(i.split(filename)[
0].strip().replace('\\', '/').lower())
filepath = list(set(filepath))
print('查找进程:成功找到%d个' % len(filepath), filepath)
#杀掉进程
print('终止服务:终止所有在运行的'+filename+'服务')
os.system("taskkill /F /IM "+filename)
time.sleep(1) # 等待终止服务运行完毕
#删除文件
for i in filepath:
os.remove(i+filename)
os.mkdir(i+filename)
print('删除文件:删除并用同名文件夹占位 %s' % (i+filename))
print('\n程序执行结束')
os.system('pause')
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(
None, "runas", sys.executable, __file__, None, 1)
else: # in python2.x
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(
sys.executable), unicode(__file__), None, 1)
print('\n程序执行结束')
except Exception as e:
print(e)
print('\n异常中止')
os.system('pause')
我的Chrome都在D盘,考虑到很多用户的Chrome都是在C盘的。
本来是想exe右键兼容赋予管理员权限的,结果发现网上有其他方法在运行的时候获取管理权限,所以借用了(参考文献:获取管理员权限 https://blog.csdn.net/qq_17550379/article/details/79006655)
写完代码后,直接用pyinstaller打包成exe
链接: https://pan.baidu.com/s/1ZZ2fHiOak62Y8BNx-NWD3g 提取码: m6tg
如果有其他更方便的方法,欢迎留言。
文章浏览阅读3.2k次。程序员宅基地排行_2018个人博客排行榜
文章浏览阅读207次。IDE软件板载汉化包。ST官网IDE下载链接。
文章浏览阅读256次。线程的安全问题分析、线程安全问题解决办法、synchronized的使用方法_java 异步代码引发 线程安全问题
文章浏览阅读1.5k次。在linux(CentOS)系统中安装VScode,并配置Python环境。_linux vscode python
文章浏览阅读177次。基于java+gui的进销存系统(java+Gui)功能介绍:基本信息管理、库存管理、销售管理、订单管理、日志管理、供应商基本信息、员工基本信息、商品信息、入库管理、出库管理、剩余库存适用课程设计,大作业,毕业设计,项目练习,学习演示等 */ @RequestMapping("/loadAllGoods") public DataGridViewResult loadAllGoods() { QueryWrapper<Goods> quer_java gui datagrid
文章浏览阅读3.2k次,点赞2次,收藏6次。5. 在Qt IDE的左侧项目导航栏中,展开你的工程文件夹,然后展开“源文件”或“头文件”文件夹,找到你的主要源文件(通常是一个以.cpp为扩展名的文件)。2. 在Qt IDE中,选择“文件”>“打开文件或项目”,然后导航到你的Qt工程文件(通常是一个以.pro为扩展名的文件)所在的目录。7. 在Qt IDE的顶部工具栏中,选择你要构建和运行的目标(例如,选择一个可执行文件或一个Qt应用程序)。10. 你的Qt应用程序将在Qt IDE的应用程序输出窗口中启动,并显示你的应用程序的界面。_如何打开qt项目
文章浏览阅读195次。数据库事务事务四大特性(ACID):原子性(atomicity):原子只是一个比较就是最小的单位,在事务中意思就是一系列操作要保证完整性,不能只执行一部分一致性(consistency):一致性就是在没有提交事务之前,不管对数据进行多少次操作,真实的数据都不会改动,只有提交了事务数据才会更改隔离性(Isolation):隔离性就是在没有完成本次事务之前,不允许其他用户对数据进行操作持久..._execute("select * from [deta$]")
文章浏览阅读1.2k次,点赞36次,收藏16次。Meta今日宣布推出其最新一代尖端开源大型语言模型Llama 3。该模型预计很快将在多个领先的云服务平台上线,Llama 3技术使Meta AI成为全球领先的AI助手之一,旨在通过学习、完成任务、创造内容及更多方式增强用户智能和减轻负担。用户现已能够体验Meta AI的服务。_llama3多模态
文章浏览阅读825次。看tensorflow源码时发现这个,记录一下:函数定义: dynamic_partition(data, partitions, num_partition, name=None)函数功能:在第一个维度上,将data数组,切分成num_partiton个数组,具体哪几个分在一起取决于partition的设置参数说明: data:要用来做拆分的tensor ;..._tensorflow dynamic_partition
文章浏览阅读6.4k次。1、在前台页面上传入date类型的字段为空值的时候会发现进不了controller,页面报错如下:HTTP Status 400 -type Status reportmessagedescription The request sent by the client was syntactically incorrect.在此情况下在controller中加入以下代码解决: @InitBind_如果表字段是date类型。合并数据的时候一条是null,一条是日期
文章浏览阅读1.3k次,点赞44次,收藏38次。损失函数是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越接近真实值。对每个单独的观测(数据点)计算损失函数。将所有损失函数(loss function)的值取平均值的函数称为代价函数(cost function),更简单的理解就是损失函数是针对单个样本的,而代价函数是针对所有样本的。
文章浏览阅读359次,点赞19次,收藏5次。很多同学课余时间多,想做兼职充实一下大学生活(赚钱)。前几天收到一个学弟的私信,字里行间都是不满。“兼职也太廉价了!整整一天的快递分拣,学弟累到第二天腰都直不起来。结果,工资到账只有60元!既赚不了钱,也无法获得任何有价值的成长。记住一句话:你不是来体验吃苦的,你的目标就是赚钱。过来人告诉你,兼职赚钱是有方法的!下面这个学姐的经历,就彻底刷新了我对大学生兼职的认识。学姐告诉我:大学生的工资一点都不廉价!学姐自己就是很好的例子。她做的兼职就自在又多金!