2012-04-17 2 views
0

다른 외부 응용 프로그램을 시작하기 위해 C# 프로그램을 만들려고합니다. 나는 주위를 봤 거든 이것을 발견 : http://www.dotnetperls.com/process-start 나는 꽤 좋은 튜토리얼입니다. 내가 가진 유일한 문제는 항상 프로그램의 경로를 알 수 없다는 것입니다. 예를 들어정확한 경로를 모른 채 C#에서 외부 프로그램 시작

, 나는이 할 경우 :

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "firefox.exe"; 
Process.Start(startInfo); 

이 성공적으로 파이어 폭스를 실행합니다. 그러나 내가 이렇게하면 :

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "chrome.exe"; 
Process.Start(startInfo); 

크롬을 찾을 수 없어 정확한 경로에서 실행해야하는 것처럼 보입니다. 그래서 내 질문은 모든 설치된 응용 프로그램의 범용 레지스트리에 액세스하고 거기에서 시작하는 방법이 있습니까? 감사.

+0

하나 없습니다. 모든 프로그램이 전통적인 의미로 "설치"되는 것은 아닙니다. 나는 그들의 commom 설치 위치를 찾기 위해 시작할 프로그램을 조사하는 것이 좋습니다. – Venatu

+0

파일 시스템에서 "chrome.exe"를 검색하면 나중에 사용할 경로를 저장 한 후 찾을 수 있습니다. – Magnus

+0

@ Magnus : 둘 이상의 "chrome.exe"가있는 경우? –

답변

2

폴더 경로가 'PATH'환경 변수에있을 때 응용 프로그램을 직접 시작할 수 있습니다.

이 변수

보거나 편집 할 수 있습니다 : 마우스 오른쪽 단추로 '컴퓨터'
  • 속성을 클릭

    1. .
    2. 사전 설정 당신이 'Windows7의'또는 '비스타'
    3. 사전
    4. 환경 변수

    항목이 ;로 구분됩니다 탭을 사용하는 경우.

    Firefox가 이미 PATH에 폴더를 넣었 기 때문에 Firefox를 실행할 수 있다고 생각합니다.

  • +2

    그는 (환경 변수를 추가하기 위해) 경로를 알고 있다면 아마 자신의 프로그램에 추가 할 것입니다. – Magnus

    +0

    그러나 문제는 일부 프로그램이거나 일부 설치가 PATH를 등록하지 않았기 때문입니다. 그래서 그는 하드 디스크에 가정하는 프로그램을 찾기가 어렵다는 것을 알아야합니다. –

    +0

    나는 Venatu와 Magnus가 옳다고 생각합니다. 실행할 범용 레지스트리가 없으므로 exe 파일을 검색해야합니다. 일단 내가 찾으면 그 경로가 실제로 올바른 경로인지 확인하라는 메시지가 표시됩니다. –

    0

    나는 Environment.GetEnvironmentVariable 방법을 검색하고 있다고 생각합니다. 는 다음과 같이 사용할 수 있습니다 :

    Environment.GetEnvironmentVariable("PATH")

    그리고 그 변수에 할당 된 문자열을 반환합니다.

    프로그램 일반적으로은 Windows OS 시작 메커니즘으로 자동으로 찾을 수 있도록 해당 문자열 내에 서명합니다.

    경우에 당신은 실행 파일의 경로를 알 수 없습니다 것을 의미

    하지만 가 실행하는 프로그램의 이름를 알고 있어야합니다.

    1

    저는 이것이 오래된 질문이지만 해결책을 찾았다 고 생각합니다.

    아래의 레지스트리 키에서 살펴 보자 :

    HKEY_LOCAL_MACHINE \ 소프트웨어를 마이크로 소프트 \ WINDOWS \ \ CurrentVersion을 설치된 각 프로그램에 대한 키가

    \ 응용 프로그램 경로 \. 예를 들어 Chrome.exe.

    참조 : 이 http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx