我将程序安装到&#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被更改为&#39;%programfiles%\ myfolder \ myicon.ico&#39;,这意味着Windows资源管理器(正在64位应用程序)正在C:\ Program Files \ myfolder \ myicon.ico&#39;中搜索myicon.ico。而不是&#39; c:\ Program Files(x86)\ myfolder \ myicon.ico&#39;
如何防止这种情况发生? (我不想将图标文件复制到分离的非重定向文件夹中)
答案 0 :(得分:0)
我通过转换字符串&#34; c:\ Program Files(x86)\ myfolder \ myicon.icon&#34;解决了这个问题。在将它传递给IconLocation之前进入旧的dos 8.3短格式: &#39; C:\ PROGRA〜2 \ MyFolder文件\ myicon.ico&#39;
set fsObj = CreateObject("Scripting.FileSystemObject")
folder = "c:\Program Files (x86)"
set fsoFolder = fsObj.GetFolder(folder)
folder = fsoFolder.ShortPath
IconLocation仍会将字符串操作为&#39;%SystemDrive%\ PROGRA~2 \ myfolder \ myicon.ico&#39;,但我对此表示赞同。