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.