2009-10-21 4 views
2

C# .NET 2.0 이상 및 Visual Studio 2008을 사용하면 Windows Vista PC에 설치된 응용 프로그램 목록을 어떻게 생성 할 수 있습니까?C# .NET 2.0 이상에서는 Vista PC에 설치된 모든 응용 프로그램 목록을 얻는 방법

필자가 생각한대로, 설치된 모든 응용 프로그램의 텍스트 파일을 저장하고 저장할 수 있으므로 컴퓨터를 재구성 할 때 이전 응용 프로그램의 목록을 모두 볼 수 있습니다.

이 질문의 두 번째 부분은 일종의 SuperUser.com 일이지만 잘하면 첫 번째 부분은 "프로그래밍"으로 간주됩니다.

감사

답변

5

당신은 마이크로 소프트 \ 윈도우 \ CurrentVersion을 \ 제거 레지스트리 키 \ 소프트웨어를 참조로 볼 수 있었다. 이러한 링크를 체크 아웃 : http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/ac23690a-f5f8-46fc-9047-c369f4370fac

+0

물론 이것은 레지스트리에 나열된 응용 프로그램 목록 만 반환합니다. XCOPY 배포를 통해 배포 된 응용 프로그램은 표시되지 않습니다. – pmarflee

+0

그래, 잠재적으로 아담의 모든 앱이 레지스트리에 나타나지는 않을 것이다. 앱이 설치되지 않고 디스크에 복사 된 앱일 수 있기 때문이다. –

+0

감사합니다. StackOverflow 규칙! –

0

하나는 installedness의 다른 수준 고려해야합니다 참조하십시오.

  • 앱 설치 후 앱이 삭제 (삭제 등)되었을 수 있습니다.
  • 일부 앱은 '설치'하지 않고 알몸의 바이너리로 실행합니다.
2

다음은 모든 사용자를 위해 설치된 앱을 제공합니다. 뿐만 아니라 Registry.CurrentUser에 대해 동일한 작업을 수행 :

RegistryKey uninstall = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); 
    List<string> applicationList = new List<string>(); 
    foreach (string subKeyName in uninstall.GetSubKeyNames()) 
    { 
     RegistryKey subKey = uninstall.OpenSubKey(subKeyName); 
     string applicationName = subKey.GetValue("DisplayName", String.Empty).ToString(); 
     if (!String.IsNullOrEmpty(applicationName)) 
     { 
      applicationList.Add(applicationName); 
     } 
     subKey.Close(); 
    } 

    uninstall.Close(); 

    applicationList.Sort(); 

    foreach (string name in applicationList) 
    { 
     Console.WriteLine(name);  
    } 

부인을 내 샘플 검사에는 null 값/오류가 없습니다!

관련 문제