【问题标题】:create shortcut with vbs用vbs创建快捷方式
【发布时间】:2014-10-14 22:13:14
【问题描述】:

我正在将程序安装到 '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 位应用程序)正在搜索'C:\Program Files\myfolder\myicon.ico' 中的 myicon.ico 而不是 'c:\Program Files (x86)\myfolder\myicon.ico'

如何防止这种情况发生? (我不想将图标文件复制到单独的非重定向文件夹中)

【问题讨论】:

  • 您能告诉我们为您的每个变量分配了哪些字符串值吗?
  • 如果 linkIconPath 正在“更改”,我们不知道它发生在您向我们展示的代码中,因为我们首先看不到任何分配给变量的内容,因为以及在获取您发布的代码之前可能对其进行的任何更改。
  • linkIconPath is 'c:\Program Files (x86)\myfolder\myicon.ico'

标签: vbscript shortcut


【解决方案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',但我可以接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多