Listar todos os softwares instalados no PC

30

Existe algo embutido no Windows que me permita listar todos os softwares instalados em um computador que possam ser copiados / colados em uma planilha? Eu sei que há software que pode fazer isso, mas não consigo instalar nada. Prefiro não usar um arquivo em lotes, se possível, mas imagino que esse seja o único caminho. Idealmente, eu seria capaz de produzir as mesmas informações mostradas na exibição (não expandida) do formulário Adicionar ou remover programas.

Joel B
fonte
Você pode escrever um arquivo em lotes para consultar o banco de dados do Windows Installer, mas isso pode não capturar tudo.
Eu escrevi um aplicativo que consulta o registro para obter essas informações e, embora o aplicativo não o coloque no formato desejado, a parte do código pode ser copiada e modificada facilmente para fazer isso, eis o link para a fonte: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod
1
No Windows PowerShell, você pode tentar: Get-WmiObject -Class Win32_Product. Veja aqui para mais detalhes.
rishimaharaj

Respostas:

40

Inicie seu console e digite:

wmic product get name,version

Demora um pouco, mas você obtém a lista completa dos programas instalados. WMIC é a versão do console do Windows Management Instrumentation, disponível no Windows 2000 e posteriores. Seguindo as instruções aqui e aqui , você pode dizer ao WMIC para saída em um formato XML, que pode ser um pouco mais conveniente para você. No entanto, basta ligar wmic product get namepara você para obter uma lista de nomes de aplicativos, que você pode copiar e colar facilmente em um editor de texto e converter em formato de planilha.

Como alternativa, insira:

wmic /output:C:\InstallList.txt product get name,version

Isso produzirá um arquivo TXT com a lista de programas. Em seguida, você pode colar isso em uma planilha, se desejar.

Fonte: http://helpdeskgeek.com/how-to/generate-a-list-of-installed-programs-in-windows/


Além disso, você pode usar o arquivo csv.xsl para formatar a saída em uma lista de resultados CSV:

wmic /output:C:\InstallList.csv product get /format:csv.xsl

ou o arquivo htable.xsl para criar uma tabela de resultados HTML:

wmic /output:C:\InstallList.htm product get /format:hform.xsl
yannis
fonte
2
Se você adicionar> InstallList.txt ao final, obterá um arquivo de texto contendo a saída. O diretório atual em que você está é onde o arquivo será criado. Além disso, você pode adicionar o InstallDate após a versão. Isso mostrará a data em que o produto foi instalado. Isso é útil para resolver qualquer programa instalado de fabricação. Você deve conseguir abrir esse arquivo de texto no Excel e classificar um pouco as coisas, se necessário.
John Dyer
8
Infelizmente, não parece gerar a mesma lista que é mostrada em Programas e Recursos: existem vários aplicativos que não aparecem no primeiro e alguns que aparecem, mas não existem no último. Alguns itens que não aparecem na wmiclista: meus jogos Steam instalados, Notepad ++, Winmerge, Gerenciador de Música do Google . Itens que não aparecem em Programas e Recursos: Java Auto Updater, Atualização de segurança para CAPICOM (KB931906) . Tentei executá-lo em um CMD de administrador, mas a listagem gerada era a mesma.
Chuim 11/07/2013
1
Esta questão em StackOverflow explica meio porquê: stackoverflow.com/questions/673233/...
Chuim
Eu usei um comando semelhante, mas que não deu poucos nomes s / w. Exemplo. Propros, clink, etc. Como incluir isso e similares?
Satya Prakash
1
Se você está recebendo Invalid Class 0x80041010 Error, em seguida, você pode ir para Add/Remove Windows Componentse verificarManagement and Monitoring Tools
KyleMit
8

Execute wmic product getpara obter uma lista do software instalado; ele deve ser exatamente a mesma lista que adicionar / remover programas.

Você pode fazer com que ele saia em um formato específico, mas eu não tentei.

(Use wmic product get /?para ver os parâmetros, incluindo a formatação de saída, tentei incluí-lo aqui, mas a formatação não estava correta.)

Mark Allen
fonte
Ha - votei em você de qualquer maneira porque você encontrou e incluiu os links para torná-lo específico em XML. Bom trabalho. :)
Mark Allen
A saída que estou recebendo não é exatamente o que lista Adicionar ou remover programas. Alguma idéia do porquê?
Joel B
Parece incluir todas as partes componentes.
Mark Allen
Existe uma maneira de obter o software instalado por qualquer usuário. Possivelmente o problema relacionado ao usuário está causando nem todos os softwares que estão na lista. Embora eu só use esta máquina.
precisa saber é o seguinte
5

Como já mencionado, você pode obter essas informações com uma consulta WMI para objetos Win32_Product. O PowerShell até o despeja em um arquivo CSV para você, se desejar.

Get-WmiObject -Class "Win32_Product" | Export-CSV (Join-Path $home "Win32_Product.csv")

No entanto, você deve procurar problemas de Win32_Product . Nem tudo são balas de goma e pirulitos.

Patrick Seymour
fonte
Eu sempre gosto de uma abordagem alternativa para as coisas, especialmente quando se trata de Powershell.
Alban
Aqui está outro comando do PowerShell para executar o truque: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | SelectName, DisplayVersion, Publisher, InstallDate | Tabela de formato - AutoSize Você pode adicionar "> arquivo de saída" para salvar a saída. Veja mais aqui: howtogeek.com/165293/… ou aqui: theitbros.com/…
yosh m
Observe que para qualquer pessoa que tente o comando @ yoshm, você precisa de outro \ entre Desinstalar e *. O comando deve ser:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade
4

O WMIC não funcionará em um servidor, a menos que você tenha instaladoManagement and Monitoring ToolsAdd/Remove Windows Components explicitamente no menu .

Outra solução é acessar o Registro e examinar todos os programas desinstaláveis , acessando:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Você precisará clicar em cada um individualmente para ver o valor; portanto, clique com o botão direito do mouse na Uninstallpasta e selecione Exportar . Verifique se o intervalo de exportação está definido para incluir apenas a ramificação selecionada :

Filial selecionada

Em seguida, você pode abrir o .regarquivo no bloco de notas ++, mas obterá muitas informações extras sobre cada aplicativo:

.reg

Você pode se livrar de todas as linhas que não começam "DisplayName" combinando com a seguinte expressão regular :

^(?!"DisplayName").+

Em seguida, você pode remover qualquer corda "DisplayName" ou "por correspondência sobre o seguinte regex :

("DisplayName"="|")

Em seguida, você pode remover quaisquer linhas duplicadas, correspondendo ao seguinte regex :

^(.*)(\r?\n\1)+$

Ou você pode apenas classificar as linhas em ordem alfabética e excluir as linhas em branco

KyleMit
fonte
3

A maneira mais fácil que encontrei é executar o limpador de piriformes.
Isso tem um botão em Ferramentas -> Desinstalar -> "salvar no arquivo de texto"

user167328
fonte
1
O OP pediu um built-in solução, uma vez que ele não pode instalar nada (ok, há CCleaner portátil, mas isso não é o ponto). E a saída deve apoiar copiar e colar
nixda
1
Entendo a limitação imposta pelo OP, mas esse método de fato gerou uma lista tão completa quanto a mostrada por Programas e Recursos (como dizem meus comentários sobre a resposta principal, wmicisso não foi possível).
Chuim 11/07/2013
0

No Windows 7, você pode usar um script do PowerShell:

Abra o PowerShell clicando no Startbotão e digitando powershellno campo de pesquisa.

Em seguida, digite o seguinte comando na janela do PowerShell:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

Você pode remover qualquer um dos campos: DisplayName, DisplayVersion, etc., se não precisar deles.

Se você deseja salvar a saída em um arquivo, use o redirecionamento:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > C:\temp\AllInstalledPrograms.txt
Flot2011
fonte
0

Duas outras soluções que não são da linha de comando não mencionadas anteriormente são:

  1. MyUninstaller - um programa freeware da NirSoft que, além de desinstalar, também pode exportar para HTML uma lista abrangente de todos os softwares instalados, que inclui muitas informações adicionais. Tem a vantagem de ser portátil. Enquanto não estiver "embutido", você pode executá-lo a partir de uma unidade USB. Você pode encontrá-lo aqui .

  2. Belarc Advisor - um programa gratuito (para uso pessoal) que faz análise de segurança e inventário abrangente do hardware e software do seu computador. Está disponível aqui . Infelizmente, você deve instalá-lo, para que ele não atenda totalmente às necessidades do OP, mas pode atender às necessidades de outras pessoas que têm a mesma pergunta e são capazes de instalar.

yosh m
fonte
0

A versão codificada em programas instalados em c # via registro

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;


namespace SoftwareInventory
{
    class Program
    {
        static void Main(string[] args)
        {
            //!!!!! Must be launched with a domain administrator user!!!!!
            Console.ForegroundColor = ConsoleColor.Green;
            StringBuilder sbOutFile = new StringBuilder();
            Console.WriteLine("DisplayName;IdentifyingNumber");
            sbOutFile.AppendLine("Machine;DisplayName;Version");

            //Retrieve machine name from the file :File_In/collectionMachines.txt
            //string[] lines = new string[] { "NameMachine" };
            string[] lines = File.ReadAllLines(@"File_In/collectionMachines.txt");
            foreach (var machine in lines)
            {
                //Retrieve the list of installed programs for each extrapolated machine name
                var registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
                using (Microsoft.Win32.RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machine).OpenSubKey(registry_key))
                {
                    foreach (string subkey_name in key.GetSubKeyNames())
                    {
                        using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                        {
                            //Console.WriteLine(subkey.GetValue("DisplayName"));
                            //Console.WriteLine(subkey.GetValue("IdentifyingNumber"));
                            if (subkey.GetValue("DisplayName") != null && subkey.GetValue("DisplayName").ToString().Contains("Visual Studio"))
                            {
                                Console.WriteLine(string.Format("{0};{1};{2}", machine, subkey.GetValue("DisplayName"), subkey.GetValue("Version")));
                                sbOutFile.AppendLine(string.Format("{0};{1};{2}", machine, subkey.GetValue("DisplayName"), subkey.GetValue("Version")));
                            }
                        }
                    }
                }
            }
            //CSV file creation
            var fileOutName = string.Format(@"File_Out\{0}_{1}.csv", "Software_Inventory", DateTime.Now.ToString("yyyy_MM_dd_HH_mmssfff"));
            using (var file = new System.IO.StreamWriter(fileOutName))
            {

                file.WriteLine(sbOutFile.ToString());
            }
            //Press enter to continue 
            Console.WriteLine("Press enter to continue !");
            Console.ReadLine();
        }


    }
}
Domenico Zinzi
fonte