【本软件只支持惠普新电脑,其他品牌不支持】多新的电脑算新呢,,,我也不知道
前言:
此篇文章用【HackBGRT】修改win11开机动画 https://www.cdsy.xyz/computer/system/Windows/230828/cd45761.html
我理解的这个软件原理是新建一个UEFI 去代替原有引导,但是开机首屏还是会出现品牌方的logo ,感觉还是差点意思,就找到惠普的一个bios脚本软件,可以修改bios的启动画面
正文:
软件:HP Client Management Script Library, 官方说明书:https://developers.hp.com/hp-client-management/doc/Set-HPFirmwareBootLogo
对比HckBGRT(各有各的好,看自己选择):
1、hp cmsl 只支持惠普电脑,bgrt支持大部分uefi启动的电脑
2、hp cmsl 支持脚本静默操作,bgrt需要手动操作选择
3、hp cmsl 直接修改bios logo,bgrt修改启动引导 开机会先加载bios logo
补充:hp cmsl开机加载bios logo,然后会显示引导,也就是黑屏 只有转圈圈 ,bgrt 先加载bios logo 然后显示自定义的引导图片。 所以两个结合一起效果更好。
语法(需要使用powershell管理员运行):Set-HPFirmwareBootLogo [-file] <String> [[-password] <String>] [<CommonParameters>]
图片要求:1、必须jpeg格式;2、分辨率不得高于 1024x768;3、文件小于32k
示例:1、Set-HPFirmwareBootLogo -file c:\users\logo.jpg(无bios密码)
2、Set-HPFirmwareBootLogo -file c:\users\logo.jpg -password 123123 (设置了bios密码)
cmd运行的话 在前面加上 powershell -Command调用powershell来运行(同样要管理员运行)
深层次应用:
公司很多都是惠普的电脑,正好想把电脑开机动画换成公司logo,就用python做了个脚本一键安装。下面提供源码大家一起讨论。
思路:
1、wmi 识别当前电脑供应商是不是HP,是HP就执行,不是就提示非惠普电脑并结束。
2、静默安装cmsl软件
3、使用system调用powershell命令设置
4、静默卸载cmsl软件
5、upx压缩打包成单文件,含安装包、logo
(软件安装包、logo图片是打包成单文件的,方法在代码文件里面)
注释也是后来才写的,代码还可以再优化一下,也懒得搞了,多一两句影响不大
顺便问下,戴尔、联想电脑 有哪位大佬知道怎么修改bios动画吗? 不要修改bios固件的,那样得针对型号,还要更新BIOS, 就想要想惠普这个一样,通用性的 ,这样就可以做成电脑判断 直接一个安装包搞定了。。。
# -*- coding: utf-8 -*-
import os , sys
import wmi
w = wmi.WMI()
obj = w.Win32_ComputerSystem()[0]
print(obj.model)
print(obj.Manufacturer)
def resource_path(relative_path):
if getattr(sys, 'frozen', False):
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
#filepath = resource_path(os.path.join("鸡蛋饼", "文件.bat"))
#wpsplus = '"'+resource_path(os.path.join("鸡蛋饼", "WPS 专业增强版 WPS+_11.1.0.11636_WPSPlus.exe"))+'" /S -agreelicense'
cmsl = resource_path(os.path.join("jdb","hp-cmsl-1.6.10.exe"))+" /SILENT" #软件+静默参数
logo = resource_path(os.path.join("jdb","logo.jpg")) # 图片
#ps1 = r"powershell -ExecutionPolicy Bypass -File " + resource_path(os.path.join("jdb","logo.ps1"))
x64 = os.path.isfile(r"C:\Program Files\WindowsPowerShell\HP.CMSL.UninstallerData\unins000.exe") #用来判断cmsl软件是否已经安装,其实多此一举
zzs = obj.Manufacturer#电脑制造商
'''
1、先生成spec文件,
pyi-makespec -F -i 图标.ico --uac-admin 文件名.py -i 图标可以不要
2、spec文件修改第11行数据,jdb是我放软件安装包和logo图片的文件夹,可以修改自己的,但是代码里面的也要跟着修改
datas=[('jdb','jdb')],
3、pyinstaller xxx.spec
'''
def ggg():
print('gggg')
os.system('powershell -Command set-executionpolicy Unrestricted') # 修改执行策略是因为一开始我用的是ps1脚本,所以要打开,但是现在用cmd调用了,按理说也可以不用开,懒得测试了
# Restricted: 脚本不能运行(默认设置)
# RemoteSigned: 在本地创建的脚本可以运行,网上下载的脚本无法运行(拥有数字证书签名例外)
# AllSigned: 仅当脚本由受信任的发布者签名时才能运行
# Unrestricted: 允许所有脚本运行'''
print('^^^^^^^ set nul 1号\n') # 打印后不报错直接 打印下一个就是bios没密码,反。。。
os.system('powershell -Command Set-HPFirmwareBootLogo -file c:\\users\\logo.jpg') # 无密码设置
print('^^^^^^^ set zhh 2号\n') # 打印后不报错直接 打印下一个就是bios密码对了,反。。。
os.system('powershell -Command Set-HPFirmwareBootLogo -file c:\\users\\logo.jpg -password mm@bios') # 尝试密码1
print('^^^^^^^ set shu 3号\n') # 打印后不报错 就是bios密码对了,反。。。
os.system('powershell -Command Set-HPFirmwareBootLogo -file c:\\users\\logo.jpg -password MM@bios%') # 尝试密码2
#因为公司电脑有的设置了bios密码,有的没有 所以要都试一下 , 成功了是不会报错的
os.system(r'start "" "C:\Program Files\WindowsPowerShell\HP.CMSL.UninstallerData\unins000.exe" /SILENT') # 卸载
os.system('powershell -Command set-executionpolicy Restricted') # power shell 执行策略恢复默认不能运行脚本
print('\n\n')
print(' 两个红色报错就成功,三个就失败。。。。。。。 (自动退出中……)')
os.system('ping 127.0.0.1 >nul')
sys.exit()
if zzs == "HP":
os.system('copy /Y "' + logo + '" c:\\users')#一开始懒得测试删了图片还有没有效, 就复制到这里了, 懒得改了 ,
if x64 == True:
#True 真。 存在
print(True)
#os.system(ps1)
ggg()
else:
print(False)
print('\n\n loading ^^^^^^^\n')
os.system(cmsl)#安装软件
ggg()
else:
print('\n\n制造商',zzs,'\n\n 仅限HP电脑 \n\n\n')
#os.system('pause')
print(' 即将退出')
os.system('ping 127.0.0.1 >nul')#目的是等待几秒后再退出,不用time是减少体积
sys.exit()