Создать ярлык с VBS

Я устанавливаю программу в 'c:\program files (x86)\myfolder\' и вызываю скрипт vbs для создания ярлыка на рабочем столе.

Dim linkObj
Set linkObj = shellObj.CreateShortcut(linkFilePath)

linkObj.WindowStyle = "1"
linkObj.HotKey = linkHotKey
linkObj.Arguments = linkArgs
linkObj.Description = linkDesc
linkObj.TargetPath = linkTarget
linkObj.WorkingDirectory = linkWorkingDir
If (linkIconPath <> "") Then linkObj.IconLocation = linkIconPath
linkObj.Save

Я передаю полные строки без какой-либо строки окружения, но в конечном результате linkIconPath изменяется на "%programfiles%\myfolder\myicon.ico", что означает, что проводник Windows (являющийся 64-битным приложением) ищет myicon. ico в 'C:\Program Files\myfolder\myicon.ico' вместо 'c:\Program Files (x86)\myfolder\myicon.ico'

Как я могу предотвратить это? (Я не хочу копировать файлы значков в отдельную, не перенаправленную папку)

1 ответ

Решение

Я решил проблему, преобразовав строку "c:\Program Files (x86)\myfolder\myicon.icon" в старый короткий формат dos 8.3, а затем передал ее в IconLocation: 'c:\PROGRA~2\myfolder\myicon.ico. '

set fsObj = CreateObject("Scripting.FileSystemObject")

folder = "c:\Program Files (x86)"
set fsoFolder = fsObj.GetFolder(folder)
folder = fsoFolder.ShortPath

IconLocation по-прежнему будет манипулировать строкой в ​​"%SystemDrive%\PROGRA~2\myfolder\myicon.ico", но я согласен с этим.

Другие вопросы по тегам