0

이 질문에는 이미 답변이 있습니다.

나는 그들의 이름으로 설치된 소프트웨어를 열려고 노력하고있다.

아래의 코드를 사용하여 열었지만 설치된 모든 소프트웨어를 감지하지 못합니다.

Process proc = new Process();
                    proc.EnableRaisingEvents = false;
                    proc.StartInfo.FileName = progName;
                    proc.Start();

그들의 이름으로 모든 것을 감지하고 여는 방법이 있습니까?

progName

입력과 함께 변경되는 문자열입니다.


  • 설치된 모든 애플리케이션을 찾거나 프로세스를 시작하는 데 링크가 표시되는지 잘 모르겠습니다. 무엇입니까progName? 너 정확히 뭘 하려구? - sab669
  • progName은 입력과 함께 변경되는 문자열입니다. 필자가 작성한 소프트웨어를 열려고합니다. 파이어 폭스, 크롬과 같은 일부 소프트웨어로 작업하지만 전부는 아닙니다. - J.Bourne
  • 운영 체제가 응용 프로그램과 파일 형식을 연결하는 방식에 문제가있는 것 같습니다. 임의의 독점 형식이 있고 파일을 여는 응용 프로그램이 열리지 않으면 파일을 열 수 없습니다. 예를 들어 다음과 같이 할 수 있습니다.Process.Start("notepad++.exe", someFilePath);n ++가 그 기능을 제공하기 때문에. 텍스트 파일을 텍스트 상자로 드래그 앤 드롭하여 표시 할 수있는 사용자 지정 win forms 응용 프로그램을 작성하는 경우,Process.Start("myApplication.exe", someFilePath);무엇이든하면 안됩니다. - sab669

1 답변


0

이 방법으로 시도 할 수 있습니다.

using Microsoft.Win32;

public List<string> GetAllInstalledPrograms()
    {
        List<string> res = new List<string>();

        string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
        using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
        {
            foreach (string subkey_name in key.GetSubKeyNames())
            {
                using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                {
                    res.Add(subkey.GetValue("DisplayName").ToString());
                }
            }
        }

        return res;
    }

연결된 질문


관련된 질문

최근 질문