[Python] como indentificar cada arquivo/programa do pc usando Python

Discussão em 'Python' iniciado por Stack, Abril 23, 2025.

  1. Stack

    Stack Membro Participativo

    Olá, resumindo o que quero fazer é uma maneira de encontrar todos sem exceção os programas/.exe do pc usando python. Mais detalhes ao fim.

    esse é o método que encontrei, usando IA.

    Código:

    import winreg
    import subprocess
    import os
    import json # <-- Importação adicionada

    def find_apps_winget():
    apps = []
    try:
    result = subprocess.run(
    ["winget", "list"], capture_output=True, text=True, check=True
    )
    lines = result.stdout.splitlines()
    for line in lines[1:]:
    if not line.strip() or line.startswith("---"):
    continue
    parts = line.split()
    if len(parts) < 3:
    continue
    name = " ".join(parts[:-2])
    app_id = parts[-2]
    version = parts[-1]
    apps.append({
    "name": name,
    "id": app_id,
    "version": version,
    "path": "",
    "source": "winget"
    })
    except Exception as e:
    print(f"Erro ao executar winget: {e}")
    return apps


    def get_apps_from_registry():
    apps = []
    registry_paths = [
    (winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"),
    (winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"),
    (winreg.HKEY_CURRENT_USER, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"),
    ]

    for hkey, reg_path in registry_paths:
    try:
    with winreg.OpenKey(hkey, reg_path) as key:
    for i in range(winreg.QueryInfoKey(key)[0]):
    try:
    subkey_name = winreg.EnumKey(key, i)
    with winreg.OpenKey(key, subkey_name) as subkey:
    name, _ = winreg.QueryValueEx(subkey, "DisplayName")
    path = ""
    try:
    path, _ = winreg.QueryValueEx(subkey, "InstallLocation")
    except FileNotFoundError:
    pass
    apps.append({
    "name": name,
    "id": "",
    "version": "",
    "path": path,
    "source": "registry"
    })
    except FileNotFoundError:
    continue
    except FileNotFoundError:
    continue

    return apps


    def get_all_installed_apps():
    registry_apps = get_apps_from_registry()
    winget_apps = find_apps_winget()

    all_apps = registry_apps + winget_apps
    all_apps.sort(key=lambda x: x["name"].lower(),)
    return all_apps


    def salvar_em_json(dados, nome_arquivo="apps_instalados.json"):
    try:
    with open(nome_arquivo, "w", encoding="utf-8") as f:
    json.dump(dados, f, ensure_ascii=False, indent=4)
    print(f"\n✅ Aplicativos salvos com sucesso em '{nome_arquivo}'")
    except Exception as e:
    print(f"Erro ao salvar em JSON: {e}")


    if __name__ == "__main__":
    apps = get_all_installed_apps()

    header = f"{'Nome':<40} {'Caminho':<60} {'Versão':<15} {'Fonte':<10}"
    print(header)
    print("-" * len(header))
    for app in apps:
    name = app["name"]
    path = app.get("path", "")
    version = app.get("version", "")
    source = app.get("source", "")
    print(f"{name:<40} {path:<60} {version:<15} {source:<10}")

    # Salvar em JSON
    salvar_em_json(apps)


    Esse foi o que conseguir usando o comando winget e verificando o registro do windows, ainda não está completo falta saber o caminho onde está o executável/exe e o objetivo é encontrar o caminho para fazer um código que abra o programa para mim, eu vim perguntar aqui pois sentir que estou muito dependente de IA.

    Como estou usando um comando, quero salvar os arquivos em arquivos .json pois demora muito para carregar toda vez que eu for usar.

    Sou novo na programação então ignorem erros ou então minha pergunta mal estruturada.

    Continue reading...

Compartilhe esta Página