문제

내 고객은 일부 워크 스테이션에서 MS Office를 OpenOffice로 교체하고 있습니다. 내 프로그램은 .xml 확장자 (오픈 형식 사용)를 사용하여 파일을 Excel로 내보내고 현재 관련 프로그램 (ShellexeCute 사용)을 사용하여 열립니다.

문제는 OpenOffice가 관련 .xml 확장자를 등록하지 않는다는 것입니다.

수동 연관성은 잘 작동하지만 설정을 쉽게 변경하기 위해 .reg 또는 무언가를 만들고 싶습니다.

나는 이미 변경된 변경 사항이있는 PC의 레지스트리를 찾고 있지만

"HKEY_CLASSES_ROOT\.xml" 

키에는 오픈 오피스를 참조하는 것이 없습니다.

협회는 어디에 저장됩니까? 작업을 수행하기 위해 어떻게 대본을 만들 수 있습니까?

도움이 되었습니까?

해결책

실제 연관성은 열쇠에 저장됩니다 "HKEY_CLASSES_ROOT\.xml" 를 가리키다.

내 컴퓨터에서 해당 키의 기본값은 "xmlfile", 아마도 그것은 당신과 동일 할 가능성이 높습니다.

그러니 가자 "HKEY_CLASSES_ROOT\xmlfile". 거기에서 해당 유형의 파일을 시작하는 데 사용되는 명령을 볼 수 있습니다.

HKEY_CLASSES_ROOT\xmlfile\shell\open\command

Windows는 이러한 종류의 리디렉션을 사용하여 여러 파일 확장을 동일한 파일 유형에 매핑하여 동일한 응용 프로그램에 매핑합니다.

아래에 "HKEY_CLASSES_ROOT\xmlfile\shell" 파일에 할 수있는 일의 "동사"와 비슷한 여러 하위 키가 있습니다. 다시, 기본값 "shell" 키는 파일을 두 번 클릭하면 어떤 동사가 사용되는지 결정합니다. 제 경우에는 이것이입니다 "open".

결론:

이러한 지식을 바탕으로 연관성을 스크립트 할 수있는 가장 쉬운 방법은 Regedit을 사용하여 해당 변경 사항이 포함 된 .reg 파일을 내보내고 이중 클릭으로 대상 컴퓨터에 적용하는 것입니다.

regedit /s new_xml_association.reg

또는 (XP 이상이고 무엇을하는지 알고있는 경우) 현재 값을 다음과 같이 덮어 씁니다.

reg add "HKEY_CLASSES_ROOT\xmlfile\shell\open\command" /ve /d "path\to\program %1"

어쨌든, 더 깊이 살펴보십시오 reg add/? 명령이 권장됩니다. 첫 번째 솔루션은 더 안전합니다.

다른 팁

DOS 명령을 고려하십시오 assoc:

C :> ASSOC /? 파일 확장 연관을 표시하거나 수정합니다

ASSOC [.EXT [= [FILETYPE]]]

.ext 파일 유형을 FileType와 연결하려면 파일 확장자를 지정합니다. 파일 확장자와 연결할 파일 유형을 지정합니다.

현재 파일 연결을 표시하려면 매개 변수가없는 ASSO를 입력하십시오. 파일 확장자만으로 ASSO가 호출되면 해당 파일 확장자에 대한 현재 파일 연관성이 표시됩니다. 파일 유형에 대해 아무것도 지정하지 않으면 명령이 파일 확장자 연관성을 삭제합니다.

이 경우 파일 연결을 사용하는 것은 잘못된 일처럼 보입니다. OpenOffice에서 애플리케이션이 파일을 열기를 원하지만 사용자가 XML 파일의 파일 연관성을 손대지 않으려면 어떻게해야합니까? 시스템의 다른 것이 해당 협회에 의존한다면 어떨까요? 이 경우 시스템을 깨고 있습니다. 당신이 IT 인 사람이라면 아마도 괜찮을 것입니다 (여전히 의심스러운 프로그래밍 관행). 그러나 그렇지 않다면 이것은 나쁜 일입니다.

OpenOffice COM 구현을 사용하여 대신 파일을 열십시오.

좋은 간단한 예 : 여기.http://www.kalitech.fr/clients/doc/vb_apiooo_en.html

나는 같은 대답을 찾는 동안 방금 이것을 발견했습니다. Pinvoke를 사용하여 C#에서 사용할 수있는 Windows FindExecutable API를 사용하여 더 나은 솔루션을 찾았습니다.

http://www.pinvoke.net/default.aspx/shell32.findexecutable

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top