Est-il un moyen de résoudre une cible .lnk qui fonctionne pour les liens qui se retrouvent dans c: \ windows \ installer?

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

Question

La façon habituelle de résoudre impliquent LNK en utilisant WShell.WshShortcut ou IShellLink cette façon:

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

Mais il y a des liens qui ne peuvent être résolus de cette façon: la résolution finissent dans c: \ windows \ installer \ {some-guid} \ python_icon.exe par exemple. La plupart des programmes Office ont ce problème aussi.

CodeProject a une autre solution fait par ingénierie inverse le format LNK http: // www. codeproject.com/KB/shell/ReadLnkFile.aspx mais il ne fonctionne pas dans thoses cas.

Y at-il une autre façon?

Quel est ce dossier c: \ Windows \ Installer? Et quel est ce something_icon.exe qui est mis dedans?

Était-ce utile?

La solution

Ok je l'ai trouvé ici la solution: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/2df18f93-77d8-4217-94a1-6cbe5333a6c4

Étant donné que ces LNK sont MSI LNK vous devez utiliser les fonctions Msi pour résoudre le chemin:

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);

pième contient le chemin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top