Pergunta

Fundo: Decidi me ensinar C# através do WPF e estou escrevendo um pequeno aplicativo que precisa obter uma lista de atalhos de menu inicial e seus alvos e armazená -los. Basicamente, estou tentando pegar todos os atalhos e colocar os caminhos de seus aplicativos de destino na memória. No entanto, eu me deparei com um problema tentando ler atalhos do Windows Installer (os que apontam para algo como C:\Windows\Installer\{90120000-0030-0000-0000-0000000FF1CE}\wordicon.exe - O Microsoft Office é um bom exemplo disso). Eu fiz algumas pesquisas e parece que o Windows usa alguma mágica nos bastidores envolvendo o registro para encontrar a localização real do arquivo.


Pergunta: Como posso obter o objetivo real desses atalhos do Windows Installer em C#? Muitas fontes que encontrei me apontam para o IShellLink Interface, mas não sei como usá -lo com C#. Prefiro usar as chamadas da API do Windows (ou, melhor ainda, uma biblioteca .NET) em vez de examinar manualmente o registro, mas vou tomar qualquer orientação sobre o assunto.

Foi útil?

Solução

Depois de fazer mais pesquisas, encontrei uma resposta fácil aqui. Está basicamente usando uma combinação do MsiGetShortcutTarget e MsiGetComponentPath funções de msi.dll.

Outras dicas

Receio que Ishelllink seja a API do Windows para usar links de shell! A API do Shell é fortemente baseada em comas.

Mas a boa notícia é que o COM Interop funciona muito bem no .NET. Este site geralmente é um recurso muito bom:

http://www.pinvoke.net/default.aspx/interfaces/ishelllinka.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top