Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Start, нет, я немного про другое, про т.н. advertised shortcuts:
Скрытый текст

Как видите, у них недоступен элемент управления «Расположение файла». А если попробовать воспользоваться банальными, стандартно доступными средствами вроде объектов автоматизации Проводника (класс «Shell.Application») или Windows Script Host (класс «WScript.Shell»), то выйдет не совсем то, что ожидается (пример ниже). Тем не менее, используя объект автоматизации Windows Installer (класс «WindowsInstaller.Installer») из комплекта Windows Installer SDK, можно получить правильный путь.

То есть, можно было бы сказать так: «Ярлык, который был создан при инсталляции/развёртывании "Программа.msi"».

На примере ярлыка Microsoft Office Word 2003 (на WSH):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strShortcutPath

Dim strGUID_ProductCode
Dim strGUID_ComponentCode


With WScript.CreateObject("Scripting.FileSystemObject")
	strShortcutPath = .BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:Common Programs").self.Path, "Microsoft Office\Microsoft Office Word 2003.lnk")
	
	WScript.Echo "Target path by Shell.Application:         ", WScript.CreateObject("Shell.Application").NameSpace(.GetParentFolderName(strShortcutPath)).ParseName(.GetFileName(strShortcutPath)).GetLink.Path
End With

WScript.Echo "Target path by WScript.Shell:             ", WScript.CreateObject("WScript.Shell").CreateShortcut(strShortcutPath).TargetPath

With WScript.CreateObject("WindowsInstaller.Installer")
	With .ShortcutTarget(strShortcutPath)
		strGUID_ProductCode   = .StringData(1)
		strGUID_ComponentCode = .StringData(3)
	End With
	
	WScript.Echo "Target path by WindowsInstaller.Installer:", .ComponentPath(strGUID_ProductCode, strGUID_ComponentCode)
End With

WScript.Quit 0
Цитата:
Код: Выделить весь код
C:\Мои проекты\0284>0001.vbs
Target path by Shell.Application:          C:\Windows\Installer\{90110419-6000-11D3-8CFE-0150048383C9}\wordicon.exe
Target path by WScript.Shell:              C:\Windows\Installer\{90110419-6000-11D3-8CFE-0150048383C9}\wordicon.exe
Target path by WindowsInstaller.Installer: C:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE

P.S. Это просто пример — само собой я понимаю, что Ваша команда работает отнюдь не со скриптами, а с полноценными ЯВУ и ассемблером, просто я давно не программист .

P.P.S. На всякий случа́́й, ссылки, могущие оказаться полезными:
Shortcut Table - Win32 apps | Microsoft Docs
[MS-SHLLINK]: Shell Link (.LNK) Binary File Format | Microsoft Docs

Отправлено: 06:11, 13-11-2019 | #160