Board logo

Title: python检测windows7系统已经安装的软件 [Print this page]

Author: sky999    Time: 2023-12-15 16:56     Title: python检测windows7系统已经安装的软件

在Python中,我们可以使用psutil库来获取有关系统的信息,包括已安装的软件。psutil是一个跨平台库,可以用来获取系统利用率和进程相关的信息。

以下是一个示例脚本,该脚本将列出在Windows 7系统上安装的所有软件:

CODE:
[Copy to clipboard]
import psutil  
  
# 获取所有正在运行的进程  
processes = psutil.pids()  
  
# 遍历每个进程,获取其详细信息  
for pid in processes:  
    try:  
        process = psutil.Process(pid)  
        print(f"进程名称: {process.name()}")  
        print(f"进程详细信息: {process.exe()}")  
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):  
        pass
请注意,上述代码将列出所有正在运行的进程,包括操作系统进程和其他用户进程。其中psutil.Process(pid).name()返回的是进程名称,而psutil.Process(pid).exe()返回的是进程的可执行文件路径。这可以用来判断该进程属于哪个软件。

然而,这并不是获取已安装软件的最佳方式。因为在Windows中,一个软件可能会在多个进程中运行,或者可能没有运行任何进程。此外,有些软件可能没有直接的可执行文件,例如浏览器插件或服务。因此,如果你需要更准确地获取已安装软件的信息,可能需要使用更复杂的方法,例如查询Windows注册表或使用第三方库。
Author: sky999    Time: 2023-12-15 17:07



CODE:
[Copy to clipboard]
import winreg  
import psutil  
  
def get_installed_software():  
    installed_software = []  
    key_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"  
    with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path) as key:  
        for i in range(0, winreg.QueryInfoKey(key)[0]):  
            skey_name = winreg.EnumKey(key, i)  
            skey_path = f"{key_path}\\{skey_name}"  
            with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, skey_path) as skey:  
                try:  
                    display_name = winreg.QueryValueEx(skey, "DisplayName")[0]  
                    installed_software.append(display_name)  
                except FileNotFoundError:  
                    pass  
    return installed_software  
  
def get_running_processes():  
    running_processes = []  
    for proc in psutil.process_iter():  
        try:  
            running_processes.append(proc.name())  
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):  
            pass  
    return running_processes  
  
# 获取已安装的软件列表  
installed_software = get_installed_software()  
print("已安装的软件:")  
for software in installed_software:  
    print(software)  
  
# 获取正在运行的程序列表  
running_processes = get_running_processes()  
print("\n正在运行的程序:")  
for process in running_processes:  
    print(process)
列出内存程序。

Image attachment: 微信图片_20231215170645.png (2023-12-15 17:07, 28.81 K) / Number of times this attachment has been downloaded 463
http://caffz.com:12345/mud/AbyssalSwamp/index/attachment.php?aid=2628


Author: sky999    Time: 2023-12-15 18:08



CODE:
[Copy to clipboard]
import winreg  
import psutil  
import requests  
  
def get_installed_software():  
    installed_software = []  
    key_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"  
    with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path) as key:  
        for i in range(0, winreg.QueryInfoKey(key)[0]):  
            skey_name = winreg.EnumKey(key, i)  
            skey_path = f"{key_path}\\{skey_name}"  
            with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, skey_path) as skey:  
                try:  
                    display_name = winreg.QueryValueEx(skey, "DisplayName")[0]  
                    installed_software.append(display_name)  
                except FileNotFoundError:  
                    pass  
    return installed_software  
  
def get_running_processes():  
    running_processes = []  
    for proc in psutil.process_iter():  
        try:  
            running_processes.append(proc.name())  
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):  
            pass  
    return running_processes  
  
def post_data(url, data):  
    headers = {'Content-Type': 'application/json'}  
    response = requests.post(url, json=data, headers=headers)  
    print(response.text)  
  
# 获取已安装的软件列表  
installed_software = get_installed_software()  
# 获取正在运行的程序列表  
running_processes = get_running_processes()  
  
# 将数据以JSON格式打包  
data = {  
    'installed_software': installed_software,  
    'running_processes': running_processes  
}  
  
# 将数据POST到192.168.10.1/post.php  
post_data('http://192.168.10.1/post.php', data)

Author: sky999    Time: 2023-12-18 15:31



Image attachment: 微信图片_20231218153032.png (2023-12-18 15:31, 71.52 K) / Number of times this attachment has been downloaded 419
http://caffz.com:12345/mud/AbyssalSwamp/index/attachment.php?aid=2635


Author: sky999    Time: 2023-12-18 15:56

python获取windows7系统已经安装的office 2010的序列号与注册信息

CODE:
[Copy to clipboard]
import winreg  
  
def get_office_registration():  
    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Office\14.0\Registration")  
    try:  
        value = winreg.QueryValueEx(key, "SerialNumber")[0]  
        registered_to = winreg.QueryValueEx(key, "RegisteredTo")[0]  
        return {  
            "Serial Number": value,  
            "Registered To": registered_to  
        }  
    except FileNotFoundError:  
        return None  
    finally:  
        winreg.CloseKey(key)  
  
def main():  
    result = get_office_registration()  
    if result:  
        print("Office 2010序列号与注册信息:")  
        for key, value in result.items():  
            print(f"{key}: {value}")  
    else:  
        print("未找到Office 2010的注册信息。")  
  
if __name__ == "__main__":  
    main()





Welcome SwampIndex (http://caffz.com:12345/mud/AbyssalSwamp/index/) caffz.com