Pregunta

Antecedentes: He decidido enseñar a mí mismo a través de C # WPF, y estoy escribiendo una pequeña aplicación que necesita para obtener una lista de accesos directos del menú y sus objetivos y almacenarlos. Básicamente, estoy tratando de tomar todos los atajos y poner sus caminos aplicaciones de destino en la memoria. Sin embargo, me he encontrado un problema al intentar leer los accesos directos de Windows Installer (las que apuntan a algo así como C:\Windows\Installer\{90120000-0030-0000-0000-0000000FF1CE}\wordicon.exe - Microsoft Office es un buen ejemplo de ello). Hice algunas investigaciones y parece que Windows utiliza un poco de magia detrás de las escenas en las que el Registro para encontrar la ubicación real del archivo.


Pregunta: ¿Cómo puedo conseguir el objetivo real de estos accesos directos de Windows Installer en C #? Una gran cantidad de fuentes que he encontrado mi punto de la interfaz IShellLink, pero no sé cómo usarlo con C #. Yo prefiero usar llamadas a la API de Windows (o, mejor aún, una biblioteca .NET) en lugar de buscar manualmente a través del Registro, pero voy a tomar ninguna orientación sobre el tema.

¿Fue útil?

Solución

Después de hacer más investigación, encontré una respuesta fácil aquí . Se trata básicamente usando una combinación de las funciones MsiGetShortcutTarget y MsiGetComponentPath de msi.dll.

Otros consejos

Me temo IShellLink es la API de Windows para el uso de enlaces de concha! La API de Shell está fuertemente basada en COM.

Pero la buena noticia es que la interoperabilidad COM funciona muy bien en .NET. Este sitio es por lo general un muy buen recurso:

http://www.pinvoke.net/default.aspx/Interfaces /IShellLinkA.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top