C# (WPF)으로 설치 프로그램 바로 가기를 읽는 방법
-
19-09-2019 - |
문제
배경: 나는 WPF를 통해 C#을 가르치기로 결정했으며, 시작 메뉴 바로 가기 목록과 목표를 얻고 저장하는 데 필요한 작은 응용 프로그램을 작성합니다. 기본적으로 나는 모든 지름길을 가져 와서 대상 응용 프로그램의 경로를 메모리에 넣으려고 노력하고 있습니다. 그러나 나는 Windows Installer 바로 가기 ( C:\Windows\Installer\{90120000-0030-0000-0000-0000000FF1CE}\wordicon.exe
- Microsoft Office는 이것의 좋은 예입니다). 나는 약간의 연구를 수행했으며 Windows는 레지스트리와 관련된 비하인드 마법을 사용하여 파일의 실제 위치를 찾는 것으로 보입니다.
의문: C#에서이 Windows 설치 프로그램 바로 가기의 실제 대상을 어떻게 얻을 수 있습니까? 내가 찾은 많은 소스가 IShellLink
인터페이스이지만 C#과 함께 사용하는 방법을 모르겠습니다. 레지스트리를 수동으로 보는 대신 Windows API 호출 (또는 더 나은 .NET 라이브러리)을 사용하는 것이 좋습니다. 그러나 문제에 대한 지침을받을 것입니다.
해결책
더 많은 연구를 한 후에는 쉬운 답변을 찾았습니다. 여기. 기본적으로 조합을 사용하고 있습니다 MsiGetShortcutTarget
그리고 MsiGetComponentPath
의 기능 msi.dll
.
다른 팁
IshellLink가 쉘 링크를 사용하기위한 Windows API 인 것 같습니다! 쉘 API는 COM 기반입니다.
그러나 좋은 소식은 COM Interop이 .NET에서 매우 잘 작동한다는 것입니다. 이 사이트는 일반적으로 매우 좋은 리소스입니다.
http://www.pinvoke.net/default.aspx/interfaces/ishelllinka.html