Gibt es eine Möglichkeit, ein LNK-Ziel zu lösen, die für Links funktionieren, die in c am Ende: \ windows \ installer?

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

Frage

Der üblicher Weg lnk zu lösen beinhaltet mit WShell.WshShortcut oder IShellLink auf diese Weise:

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

Aber es gibt Links, die nicht auf diese Weise gelöst werden können: die Auflösung am Ende in c: \ windows \ installer \ {some-guid} \ python_icon.exe zum Beispiel. Die meisten Office-Programme haben auch dieses Problem.

Codeproject hat eine andere Lösung durch Reverse Engineering des LNK-Format http: // www. codeproject.com/KB/shell/ReadLnkFile.aspx aber es funktioniert nicht in thoses Fällen.

Gibt es eine andere Art und Weise?

Was ist das C: \ Windows \ Installer-Ordner? Und was ist das something_icon.exe, die darin gestellt wird?

War es hilfreich?

Lösung

Ok Ich habe hier die Lösung gefunden: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/2df18f93-77d8-4217-94a1-6cbe5333a6c4

Da diese lnk MSI sind lnk Sie haben Msi Funktionen verwenden, um den Pfad zu beheben:

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

p-ten enthält den Pfad.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top