Windows 명령 줄에서 설치된 응용 프로그램 목록 가져 오기


34

나는 한 남자가 명령을 실행하고 자신의 컴퓨터에 설치된 모든 응용 프로그램 목록을 얻었습니다. 어떻게해야합니까?

현재 설치된 응용 프로그램 목록을 원합니다. 나는 그가 어떻게 든 WSH 를 사용했다고 생각 합니다.


답변:


39

Windows Vista 또는 Windows 7 을 사용 하고 추가 소프트웨어를 설치하지 않으려는 경우 다음을 수행 할 수 있습니다.

  1. 명령 줄 창을 엽니 다 ( Windows+ R, CMD.EXE)
  2. 타입 wmic( Enter)
  3. 타입 product get name( Enter)

+1 요즘 WMI에서 알려 드릴 수없는 머신은 많지 않습니다.
— GAThrawn 2009

5
여기서 Win32_Product는 설치된 소프트웨어에 대한 모든 정보를 제공하지는 않습니다. 즉, 모든 소프트웨어가 나열되지는 않습니다. 그 이유는 win32_product가 MSI 데이터베이스를 쿼리하여 목록을 가져 오기 때문입니다. 그러나 exe에서 설치 될 때 항목이없는 많은 소프트웨어가 있습니다. 이 경우 제거 레지스트리 키를 쿼리하면 이러한 소프트웨어에 대한 정보가 제공됩니다.
— 비참한 변수

1
@MiserableVariable 그렇게 말합니까? (잘못된 링크입니까?) 비슷한 방식으로 제거 레지스트리를 어떻게 쿼리합니까? (또는 아마도 wmic자신 을 사용하여 ?)
— JeromeJ

1
Windows 10
— Turcia

5
그것은 단지 나입니까, 아니면 매우 느리게 진행됩니까?
— user3083324

27

Microsoft / Sysinternals의 PsInfo 는 실행할 때 -s 플래그 를 사용하면 설치된 모든 소프트웨어를 나열 할 수 있습니다. 예를 들어 -c 를 사용하여 Excel에서 사용할 CSV 파일로 출력 할 수도 있습니다 .

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv

1
WMI 솔루션과 달리 Win XP에서도 작동합니다.
— Gerd Klima

에 설치된 모든 소프트웨어가 표시되지 않습니다 Windows 2012 R2 x64. 내가 사용하고PsInfo ver. 1.77
— 토마시 토

더 큰 목록을 생성 듯이 방법은 내 노트북에 933 개 항목을 생산하고 WMI 방법은 598을 생산 ...
— 안드레이 Adamenko

@djhowell : Windows 7에서 명령을 실행하려고하는데 " psinfo is not recognized as an internal or external command, operable program or batch file." 오류가 발생 합니다. 그리고 이것은 높은 권한의 cmd 창에서도 발생합니다.
— skm

14

이들을 나열하는 PowerShell 스크립트 :

$loc = Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall

$names = $loc |foreach-object {Get-ItemProperty $_.PsPath}

foreach ($name in $names)
{
    Write-Host $name.Displayname
}

정확하게 명령 줄이 아니지만이 목적을 위해 개인적으로 CCleaner의 제거 도구를 사용하며 설치된 소프트웨어 목록을 텍스트 파일로 내보낼 수 있습니다.

대체 텍스트


2
오히려 Windows Powershell 등의 도구를 실행하는 데 오랜 시간이 걸리지 만 (> 5 분) CCleaner는 즉시 사용됩니다.
— CAD bloke

6

정확한 명령 줄은 아니지만 신뢰할 수있는 오래된 SIW 도 작업을 수행합니다. 응용 프로그램을 강조 표시 하고 마우스 오른쪽 버튼으로 클릭 → 내보내기 → CSV, HTML, TXT 또는 XML :

대체 텍스트

SIW는 프리웨어 및 휴대용이며 설치가 필요하지 않습니다.


SIW가 라이센스를 요구하는 것을 항상 알고 있습니다. 프리웨어로 어디서 구할 수 있습니까?
— El Turner

3

위의 CCleaner 솔루션은 명령 줄을 사용하기로 결정하지 않는 한 적절한 방법으로 보입니다. 전에는 CCleaner를 사용해 봤지만 좋은 도구이지만 모든 프로그램이 프로그램 추가 / 제거 애플릿 (동일한 목록)에 등록되어 있다고 가정하지 마십시오. xcopy 스타일 설치를 사용하는 많은 응용 프로그램이 있습니다. 즉, 간단히이 아카이브의 압축을 풀고 실행하십시오. 그것들은 목록에 나타나지 않습니다.


3

MicTech 솔루션에 추가하려면 wmic설치된 소프트웨어 목록을 사용 하여 파일로 캡처하십시오.

명령 줄 창을 엽니 다 ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

Sysinternals psinfo.exe는 제시된 모든 제안에 대한 가장 완전한 정보를 제공하며, 영구적으로 다운로드하지 않고 명령 줄에서 직접 CMD 프롬프트로 직접 실행할 수 있습니다.

\\live.sysinternals.com\tools\psinfo.exe -s > %userprofile%\Desktop\_psinfo.txt

이 명령을 실행할 때 보안 프롬프트가 표시되고 컴퓨터에서 처음으로 EULA 프롬프트가 표시됩니다. 텍스트 파일이 현재 바탕 화면에 저장됩니다.

다음과 같이 EULA를 자동으로 수락 할 수 있습니다.

\\live.sysinternals.com\tools\psinfo.exe -s /accepteula > %userprofile%\Desktop\_psinfo.txt


0

Windows 레지스트리를 통한 C # 설치 프로그램의 인코딩 된 버전 :

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)
                            {
                                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();
        }
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.