Den*_*kin 2 python winapi pywin32
我使用寄存器中的搜索和 Win32_Product 类来获取计算机上安装的程序列表,但它没有给出所有程序,我见过 C++ 中的程序给出的结果与控制面板的程序和组件。是否有任何可以给我相同结果的 python api。这是c ++的代码https://www.codeproject.com/Articles/6791/How-to-get-a-list-of-installed-applications 这就是我使用的:import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer, "root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Product")
for objItem in colItems:
print("Name: ", objItem.Name)
Run Code Online (Sandbox Code Playgroud)
和 whis 注册表:
aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
for i in range(1024):
try:
asubkey_name = EnumKey(aKey, i)
asubkey = OpenKey(aKey, asubkey_name)
val = str(QueryValueEx(asubkey, "DisplayName"))
b = "!@#$,01'"
for char in b:
val = val.replace(char, "")
r = len(val)
val = str(val[1:r - 2])
val2 = str(QueryValueEx(asubkey, "DisplayIcon"))
if s.lower() in val.lower():
r = len(val2)
val2 = str(val2[2:r - 5])
# print(val2)
subprocess.Popen(val2)
break
# print(val, val2)
except EnvironmentError:
continue
Run Code Online (Sandbox Code Playgroud)
稍微改进的版本,无需 win32con 导入和检索软件版本和发布者。感谢 Barmak Shemirani 的初步回答:)
[编辑] 免责声明:这篇文章中的代码已过时。
我已将该代码发布为 python 包。
安装pip install windows_tools.installed_software
用法:
from windows_tools.installed_software import get_installed_software
for software in get_installed_software():
print(software['name'], software['version'], software['publisher'])
Run Code Online (Sandbox Code Playgroud)
[/编辑]
import winreg
def foo(hive, flag):
aReg = winreg.ConnectRegistry(None, hive)
aKey = winreg.OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
0, winreg.KEY_READ | flag)
count_subkey = winreg.QueryInfoKey(aKey)[0]
software_list = []
for i in range(count_subkey):
software = {}
try:
asubkey_name = winreg.EnumKey(aKey, i)
asubkey = winreg.OpenKey(aKey, asubkey_name)
software['name'] = winreg.QueryValueEx(asubkey, "DisplayName")[0]
try:
software['version'] = winreg.QueryValueEx(asubkey, "DisplayVersion")[0]
except EnvironmentError:
software['version'] = 'undefined'
try:
software['publisher'] = winreg.QueryValueEx(asubkey, "Publisher")[0]
except EnvironmentError:
software['publisher'] = 'undefined'
software_list.append(software)
except EnvironmentError:
continue
return software_list
software_list = foo(winreg.HKEY_LOCAL_MACHINE, winreg.KEY_WOW64_32KEY) + foo(winreg.HKEY_LOCAL_MACHINE, winreg.KEY_WOW64_64KEY) + foo(winreg.HKEY_CURRENT_USER, 0)
for software in software_list:
print('Name=%s, Version=%s, Publisher=%s' % (software['name'], software['version'], software['publisher']))
print('Number of installed apps: %s' % len(software_list))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4784 次 |
| 最近记录: |