C'è un modo per risolvere un target .lnk che funziona per i collegamenti che finiscono in c: windows \ Installer \?

StackOverflow https://stackoverflow.com/questions/964444

Domanda

Il solito modo per risolvere LNK coinvolgere utilizzando WShell.WshShortcut o IShellLink in questo modo:

var WshShell = WScript.CreateObject("WScript.Shell");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\some-shortcut.lnk");
WScript.Echo(oShellLink.TargetPath)

Ma ci sono collegamenti che non possono essere risolti in questo modo: la risoluzione finiscono in c: \ Windows \ Installer \ {some-guid} \ python_icon.exe , per esempio. La maggior parte dei programmi di Office hanno questo problema anche.

CodeProject ha un'altra soluzione fatto da reverse engineering del formato http: // www. codeproject.com/KB/shell/ReadLnkFile.aspx ma non lavora in thoses casi.

C'è un altro modo?

Che cosa è questa cartella C: \ Windows \ Installer? E qual è questo something_icon.exe che è messo in esso?

È stato utile?

Soluzione

Ok ho trovato la soluzione qui: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/2df18f93-77d8-4217-94a1-6cbe5333a6c4

Dal momento che questi sono LNK LNK MSI è necessario utilizzare le funzioni di MSI per risolvere il percorso:

TCHAR pc [50] = {0};
TCHAR feat [100] = {0};
TCHAR comp [50] = {0};
int b=MsiGetShortcutTarget("Python (command line).lnk",pc,feat,comp);

TCHAR pth [500] = {0};
DWORD chs = 500;
int i = MsiGetComponentPath (pc, comp, pth, &chs);

PTH contiene il percorso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top