PC에 설치된 모든 소프트웨어 나열


30

스프레드 시트에 복사 / 붙여 넣기 할 수있는 방식으로 컴퓨터에 설치된 모든 소프트웨어를 나열 할 수있는 기능이 Windows에 내장되어 있습니까? 이 작업을 수행 할 수있는 소프트웨어가 있지만 아무것도 설치할 수 없습니다. 가능하면 배치 파일을 사용하지 않는 것이 좋지만 이것이 유일한 방법이라고 생각합니다. 이상적으로는 프로그램 추가 / 제거 양식의 확장되지 않은보기에 표시된 것과 동일한 정보를 출력 할 수 있습니다.


Windows Installer 데이터베이스를 쿼리하기 위해 배치 파일을 작성할 수는 있지만 모든 것을 잡을 수는 없습니다.

이 정보에 대한 레지스트리를 쿼리하는 응용 프로그램을 작성했으며 응용 프로그램이 원하는 형식으로 정보를 넣지 않지만 코드 부분을 복사하여 쉽게 수정할 수 있습니다. 소스에 대한 링크는 다음과 같습니다. pulsarsoftware.org/Projects/ProcessManager.html
MaQleod

1
Windows Powershell에서는 다음을 시도해 볼 수 있습니다 Get-WmiObject -Class Win32_Product.. 자세한 내용은 여기 를 참조하십시오.
rishimaharaj

답변:


40

콘솔을 시작하고 다음을 입력하십시오.

wmic product get name,version

시간이 걸리지 만 설치된 프로그램의 전체 목록이 표시됩니다. WMIC는 Windows 2000 이상에서 사용할 수있는 콘솔 버전의 Windows Management Instrumentation입니다. herehere 지침에 따라 WMIC에게 XML 형식으로 출력 하도록 지시 하면 좀 더 편리 할 수 ​​있습니다. 그러나 그냥 전화 wmic product get name하면 응용 프로그램 이름 목록이 표시되므로 붙여 넣기를 텍스트 편집기에 쉽게 복사하고 스프레드 시트 형식으로 변환 할 수 있습니다.

또는 다음을 입력하십시오.

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

프로그램 목록과 함께 TXT 파일이 출력됩니다. 그런 다음 원하는 경우 스프레드 시트에 붙여 넣을 수 있습니다.

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


또한 csv.xsl 파일을 사용하여 결과를 CSV 결과 목록으로 형식화 할 수 있습니다.

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

또는 htable.xsl 파일을 사용하여 HTML 결과 테이블을 작성하십시오.

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

2
> InstallList.txt를 끝에 추가하면 출력이 포함 된 텍스트 파일이 표시됩니다. 현재 디렉토리는 파일이 생성 될 위치입니다. 또한 버전 다음에 InstallDate를 추가 할 수 있습니다. 제품이 설치된 날짜가 표시됩니다. 이것은 제조 설치 프로그램을 정렬하는 데 편리합니다. 이 텍스트 파일을 Excel에서 열고 필요한 경우 약간 정렬 할 수 있어야합니다.
존 다이어

8
안타깝게도 프로그램 및 기능에 표시된 것과 동일한 목록을 생성하지 않는 것 같습니다. wmic목록에 표시되지 않는 일부 항목 : 설치된 Steam 게임, 메모장 ++, Winmerge, Google 뮤직 매니저 . : 프로그램에 표시 및 기능하지 않는 항목 자바 자동 업데이트 프로그램, 보안 업데이트를 CAPICOM (KB931906)에 대한 . 관리자 CMD에서 실행하려고 시도했지만 생성 된 목록은 동일했습니다.
Chuim

1
StackOverflow 의이 질문은 왜 설명합니다 : stackoverflow.com/questions/673233/…
Chuim

비슷한 명령을 사용했지만 소프트웨어 이름이 거의 없습니다. 예. 프로 로스, 땡그랑 소리 등 어떻게 포함시킬까요?
Satya Prakash 2012 년


8

wmic product get설치된 소프트웨어 목록을 얻으려면 실행하십시오 . 프로그램 추가 / 제거와 정확히 동일한 목록 이어야합니다 .

특정 형식으로 출력 할 수는 있지만 시도하지는 않았습니다.

( wmic product get /?출력 형식을 포함한 매개 변수를 보려면 여기에 포함 시키려고했지만 형식이 잘못되었습니다.)


Ha-XML을 구체적으로 출력 할 수있는 링크를 찾아서 포함 시켰기 때문에 어쨌든 찬성했습니다. 잘 했어. :)
Mark Allen

내가 얻는 결과는 정확히 프로그램 추가 / 제거 목록 이 아닙니다 . 어떤 아이디어가 있습니까?
Joel B

모든 구성 요소가 포함되어있는 것 같습니다.
Mark Allen

모든 사용자가 소프트웨어를 설치하는 방법이 있습니까? 사용자 관련 문제로 인해 모든 소프트웨어가 목록에 나타나지 않을 수 있습니다. 이 기계 만 사용하지만
Satya Prakash 2012 년

5

다른 사람들이 언급했듯이 Win32_Product 개체에 대한 WMI 쿼리를 사용하여이 정보를 얻을 수 있습니다. 원하는 경우 PowerShell에서 CSV 파일로 덤프합니다.

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

그러나 Win32_Product issues를 검색 해야 합니다 . 모든 껌과 막대 사탕이 아닙니다.


나는 항상 Powershell과 관련된 경우에 다른 대안을 선호합니다.
Alban

다음은 트릭을 수행하는 다른 PowerShell 명령입니다. Get-ItemProperty HKLM : \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | 개체 선택 DisplayName, DisplayVersion, 게시자, InstallDate | Format-Table –AutoSize "> outputfile"을 추가하여 출력을 저장할 수 있습니다. 자세한 내용은 여기를 참조하십시오 : howtogeek.com/165293/... 또는 여기 : theitbros.com/...
yosh m

@yoshm의 명령을 시도하는 다른 사람은 Uninstall과 * 사이에 다른 \가 필요합니다. 명령은 다음과 같아야합니다.Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade

4

사용자가 명시 적으로하지 않는 WMIC는 서버에서 작동하지 않습니다 설치 Management and Monitoring Tools에서 Add/Remove Windows Components메뉴 .

또 다른 해결책은 레지스트리로 이동하여 다음으로 이동하여 모든 제거 가능한 프로그램 을 보는 것입니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

값을 보려면 각각을 개별적으로 클릭해야합니다. 대신 Uninstall폴더를 마우스 오른쪽 버튼으로 클릭 하고 내보내기를 선택할 수 있습니다 . 내보내기 범위선택된 분기 만 포함하도록 설정되어 있는지 확인하십시오 .

선택된 지점

그런 다음 .reg메모장 ++ 에서 파일을 열 수 있지만 각 응용 프로그램에 대한 많은 추가 정보를 얻을 수 있습니다.

.reg

다음 정규식과 일치시켜 시작하지 않는 모든 줄을 제거 할 수 있습니다 ."DisplayName"

^(?!"DisplayName").+

그럼 당신은 제거 할 수 있습니다 중 하나를 문자열 "DisplayName" 이나 "에 일치하여 다음과 같은 정규식 :

("DisplayName"="|")

그런 다음 다음 정규식 에서 일치시켜 중복 행 을 제거 할 수 있습니다 .

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

또는 알파벳순으로 줄을 정렬 한 다음 빈 을 삭제할 수 있습니다.


3

내가 찾은 가장 쉬운 방법은 piriform의 ccleaner를 실행하는 것입니다.
도구-> 제거-> "텍스트 파일로 저장"에 버튼이 있습니다.


1
OP는 아무것도 설치할 수 없기 때문에 빌트인 솔루션을 요청했습니다. (확인, CCleaner 휴대용이 있지만 요점은 아닙니다). 그리고 출력은 복사 및 붙여 넣기를 지원해야합니다
nixda

1
OP가 부과 한 제한을 이해하지만 실제로이 방법은 프로그램 및 기능에 표시된 것처럼 완전한 목록을 생성했습니다 wmic.
Chuim

0

Windows 7에서는 PowerShell 스크립트를 사용할 수 있습니다.

Start버튼 을 클릭 powershell하고 검색 필드에 입력 하여 PowerShell을 엽니 다 .

그런 다음 PowerShell 창에 다음 명령을 입력하십시오.

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

필요하지 않은 경우 DisplayName, DisplayVersion 등의 필드를 제거 할 수 있습니다.

출력을 파일로 저장하려면 리디렉션을 사용하십시오.

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

0

이전에 언급되지 않은 다른 두 가지 명령 줄 솔루션은 다음과 같습니다.

  1. MyUninstaller-제거 이외에도 많은 추가 정보가 포함 된 모든 설치된 소프트웨어의 전체 목록을 HTML로 내보낼 수있는 NirSoft의 프리웨어 프로그램입니다. 휴대가 가능하다는 장점이 있습니다. "내장"된 것은 아니지만 USB 드라이브에서 실행할 수 있습니다. 여기에서 찾을 수 있습니다 .

  2. Belarc Advisor-컴퓨터 하드웨어 및 소프트웨어의 보안 분석 및 포괄적 인 인벤토리를 수행하는 프리웨어 (개인용) 프로그램입니다. 그것은 사용할 수 있습니다 여기에 . 안타깝게도 설치해야하므로 OP의 요구 사항을 완전히 충족시키지 못하지만 동일한 질문이 있고 설치할 수있는 다른 사람의 요구를 충족 할 수 있습니다.


0

레지스트리를 통한 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 && 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();
        }


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