Есть ли способ разрешить цель .lnk, которая работает для ссылок, которые заканчиваются в c:\windows\installer?

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

Вопрос

Обычный способ разрешения lnk включает использование WShell.WshShortcut или IShellLink таким образом :

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

Но есть ссылки, которые не могут быть разрешены таким образом :разрешение заканчивается в c:\windows\installer \{some-guid}\python_icon.exe например.Большинство офисных программ тоже сталкиваются с этой проблемой.

У CodeProject есть другое решение, выполненное путем обратного проектирования формата lnk http://www.codeproject.com/KB/shell/ReadLnkFile.aspx но в этих случаях это не работает.

Есть ли какой - нибудь другой способ ?

Что это за папка c:\Windows\Installer ?И что это такое something_icon.exe что в это вложено ?

Это было полезно?

Решение

Хорошо, я нашел решение здесь : http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/2df18f93-77d8-4217-94a1-6cbe5333a6c4

Поскольку эти lnk являются MSI lnk, вы должны использовать функции Msi для разрешения пути :

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

птг содержит путь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top