Microsoft MVP성태의 닷넷 이야기
글쓴 사람
ho
홈페이지
첨부 파일
 
부모글 보이기/감추기

안녕하세요
제가 설명이 부족했던 것 같습니다^^;
우선 ProgramAssociationInfo 클래스는 NuGet을 통해 설치하였습니다.
(FileAssociationInfo 로 검색을 하시면 됩니다.)

private static void Myfunc()
{
        //확장자는 .jpg/.mp3/.ppt등 으로 확인을 해봤습니다.
    var progInfo = new ProgramAssociationInfo(new FileAssociationInfo(".mp3").ProgID);
    var commands = progInfo.Verbs.Select(p => p.Command);
}

간략한 예제 코드는 위와 같습니다.
ProgramAssociationInfo의 생성자는 파라미터로 ProgID를 받으므로 FileAssociationInfo(- 생성자의 파라미터는 확장자입니다.)를 이용해
ProgID를 취득 후 ProgramAssociationInfo객체를 생성하였습니다.
그 결과 Verbs 속성.. 즉, ProgramVerb 속성 중 Command에서 파일 실행(연결) 프로그램의 설치 경로를 확인 할 수 있었기에
배열 중 어딜 참고하는지 알기만 하면 되는 줄 알았습니다.
하지만 문서와 관련해 테스트중 폴라리스 오피스를 설치 후, 폴라리스 오피스를 엑셀등의 문서를 기본 실행 프로그램으로 등록 하여
ProgramAssociationInfo을 통해 실행 프로그램의 설치 경로를 확인 해 봤지만 폴라리스 오피스의 경로를 확인 할 수 없었습니다.
또한, 음원(mp3) 파일의 실행(연결) 프로그램이 알송으로 되어 있어 연결 프로그램을 네이버 미디어, Groove 등으로 변경을 해 봤지만
알송과 윈도우 미디어 플레이어의 경로만 확인 될 뿐 기본 연결 프로그램으로 설정한 프로그램의 경로는 취득 할 수 없었습니다.
폴라리스 오피스의 경우 아이콘을 우 클릭 후 설치 경로를 확인하여
Process.StartInfo.FileName으로 지정했지만 바로 Exited 이벤트를 호출해 확인을 해 보니
확장자별 가각의 프로그램이 따로 있음을 확인 할 수 있었습니다.(엑셀 : PSheet.exe, 워드 : PWord.exe, PPT : PSlide.exe...)
엑셀 파일의 연결 프로그램을 폴라리스 오피스로 등록을 하면 PSheet.exe파일이 연결 프로그램으로 설정이 되어있고
ProgramAssociationInfo객체를 이용해 설치 경로를 확인하여 Process.Start를 진행하면 좋을테지만
테스트를 한 결과 제가 원하는 연결 프로그램의 설치 경로를 얻어 오기가 어렵단 결론을 내렸습니다.
하여 다른 방법등을 통해 연결 프로그램으로 설정 되어 있는 경로를 취득 할 수 있는지 궁금하여 질문을 올린 것 입니다.

감사합니다.
수고하세요








[최초 등록일: ]
[최종 수정일: 8/23/2017]


비밀번호

댓글 작성자
 



2017-08-23 01시34분
설명을 들어보니, 확장자를 실제로 처리하는 EXE를 찾기가 힘든 경우가 더러 있을 것 같습니다. 경우에 따라서는 자식 프로세스를 대기해야 하는데 규칙이 정해진 것이 아니라 힘들 것 같습니다.

암튼, 윈도우가 제공하는 레지스트리에 기반한 내용을 가장 잘 보여주는 AssocQueryString API가 있는데 마찬가지로 그런 문제는 해결할 수 없습니다. 일단 다음의 글에 정리했으니 참고만 하세요.

C# - (파일) 확장자와 연결된 실행 파일 경로 찾기
; http://www.sysnet.pe.kr/2/0/11276
정성태

... 76  77  78  79  80  81  82  83  84  [85]  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
353정성태4/20/200617910    답변글 [답변]: 이번겨울방학때세도나를 여행하려구하는데요,,,
351오기4/18/200610712aspx [2]
350유지연4/17/200611467smartclient DB connection관련 질문 입니다. [2]파일 다운로드1
349선재빠4/17/200611471object tag를 2개 넣으면 IE가 죽어버리네요. [2]
347박찬용4/13/200611490COM+에 관한 질문입니다. [2]
345선재빠4/11/200612305Winform을 띄울 수 있는 방법이 있나요? [3]
344선재빠4/10/200613567ASP.NET 2.0에서는 VIEWASTEXT 이란 태그옵션을 지원하지 않는군요 [3]
343선재빠4/10/200612663아래와 같은 에러가 나네요.
341선재빠4/8/200612357테스트 페이지를 보면 프레임만 나오고 안에 내용이 나오지 않는군요 [1]
340김형태4/4/200611521파일서버 관련 질문드립니다.. (데브피아 답변에 이어) [2]
339조남정4/4/200611687post 주소 읽어오기 [1]
338장두헌4/4/200613292SDK PlatForm 다시 질문 - 데브피아의 내용 [1]
337강완모4/3/200613574Cab파일이 아닌 설치용 파일로 OCX들 설치하기... [1]
335비니3/23/200614514밑에 Smart Client에 대해서 질문했던 초보입니다.. TreeView컨트롤은 보이는데 안에 내용이 안보여요. [1]
336비니3/24/200612431    답변글 [재질문]:자꾸 죄송합니다...링크페이지로 이동을 안해요.... [1]
334비니3/23/200612130Smart Client강의 따라해보다가 xml에서 활성스키마는 <Tree>,<L> 요소는 지원하지 않는다고 나와요.ㅠㅠ [1]
332정준명3/21/200612180[자문자답] VS.NET에서 COM을 참조했는데, 강력한 서명이 없다고 사용불가네요.
333정성태3/22/200610721    답변글 [답변]: [자문자답] VS.NET에서 COM을 참조했는데, 강력한 서명이 없다고 사용불가네요. [1]
330심현철3/3/200613835[질문] VS2005에서 C#으로 개발한 DLL을 Javascript에서 접근할 수 없습니다. (ActiveX with C#) [2]
329권인성2/27/200612018스마트클라이언트(clickonce) 버전관리 [1]
327권인성2/24/200611641clickonce를 통해 설치 및 업데이트하려고 하는데요...보안때문에요..
331정성태3/12/200612710    답변글 [답변]: clickonce를 통해 설치 및 업데이트하려고 하는데요...보안때문에요..
325권인성2/23/200611223SETUP 및 배포관련 [1]
326권인성2/23/200610715    답변글 [답변]: 한가지만 더 질문할게요.... [1]
323정보문2/21/200611076메일 내용에서 한글이 깨집니다. [1]파일 다운로드1
321셈토2/18/200610859SPOOL --> EMF --> TEXTOUT [1]
... 76  77  78  79  80  81  82  83  84  [85]  86  87  88  89  90  ...