重装电脑时,为了给原电脑做个备份,但程序列表太长,又不想一次性全安装拖慢系统速度。先导出列表,用到时再装。
搜了一下,使用winreg库可以实现,代码参考了:https://www.cnblogs.com/flankershen/p/7568828.html, 原代码中使用python2语法,winreg是python 3中的最新的库,python 2时是_winreg。
代码修改如下:
import os
import socket
import winreg
#检测主机名,并将主机名作文检测结果的文件名
hostname = socket.gethostname()
file = open(r'%s.txt' % hostname, 'w')#保存在当前目录,使用新建模式
#定义检测位置
sub_key = [
r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
r'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
]
software_name = []
for i in sub_key:
key = winreg.OpenKey(
winreg.HKEY_LOCAL_MACHINE,
i,
0,
winreg.KEY_ALL_ACCESS
)
for j in range(0, winreg.QueryInfoKey(key)[0]-1):
try:
key_name = winreg.EnumKey(key, j)
key_path = i + '\\' + key_name
each_key = winreg.OpenKey(
winreg.HKEY_LOCAL_MACHINE,
key_path,
0,
winreg.KEY_ALL_ACCESS
)
DisplayName, REG_SZ = winreg.QueryValueEx(each_key, 'DisplayName')
DisplayName = DisplayName.encode('utf-8')
software_name.append(DisplayName)
except WindowsError:
pass
software_name = list(set(software_name))
software_name = sorted(software_name)
try:
for result in software_name:
app_name=str(result,encoding='utf-8')
file.write(app_name + '\n')
print(app_name)
except Exception as e:
print(e)
finally:
file.close()
但直接运行会提示
发生异常: PermissionError
[WinError 5] 拒绝访问。
用管理员模式打开VSCODE,可以运行成功。
或者管理员模式打开命令行运行.py文件。