方法1:创建快捷方式并设置图标(最常用)
Set WshShell = WScript.CreateObject("WScript.Shell")
' 创建快捷方式
strDesktop = WshShell.SpecialFolders("Desktop")
Set oShellLink = WshShell.CreateShortcut(strDesktop & "\我的程序.lnk")
' 设置快捷方式属性
oShellLink.TargetPath = "C:\Program Files\MyApp\myapp.exe"
oShellLink.WorkingDirectory = "C:\Program Files\MyApp"
oShellLink.IconLocation = "C:\路径\到\图标文件.ico,0" ' 0表示第一个图标
oShellLink.Description = "我的应用程序"
oShellLink.Save
MsgBox "快捷方式已创建并设置图标!"
方法2:修改现有快捷方式的图标
Set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
' 修改现有快捷方式
Set oShellLink = WshShell.CreateShortcut(strDesktop & "\我的程序.lnk")
oShellLink.IconLocation = "C:\图标\newicon.ico" ' 修改图标
oShellLink.Save
MsgBox "快捷方式图标已更新!"
方法3:使用Shell对象操作文件图标(高级)
' 这种方法需要使用Shell.Application对象
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\目标文件夹")
Set objFolderItem = objFolder.ParseName("myapp.exe")
' 注意:直接修改EXE文件的图标需要特殊权限和复杂操作
' 通常建议使用快捷方式方式
方法4:创建带自定义图标的VBScript自身
' 保存为.vbs文件,使用自定义图标
' 需要配合.hta文件或创建快捷方式
' 示例:创建HTA应用包装VBScript
htaContent = "<html>" & _
"<head>" & _
"<title>我的应用</title>" & _
"<hta:application icon=""myicon.ico"" />" & _
"</head>" & _
"<body>" & _
"<script language=""VBScript"">" & _
" ' 你的VBScript代码在这里" & _
" MsgBox ""Hello World!""" & _
"</script>" & _
"</body>" & _
"</html>"
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile("myapp.hta", True)
file.Write htaContent
file.Close
MsgBox "HTA应用已创建,使用自定义图标!"
方法5:批量修改多个快捷方式图标
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' 图标文件路径
iconPath = "C:\icons\myicon.ico"
' 桌面文件夹
desktopPath = WshShell.SpecialFolders("Desktop")
' 遍历桌面快捷方式
Set folder = fso.GetFolder(desktopPath)
For Each file In folder.Files
If LCase(fso.GetExtensionName(file.Name)) = "lnk" Then
Set lnk = WshShell.CreateShortcut(file.Path)
lnk.IconLocation = iconPath
lnk.Save
End If
Next
MsgBox "所有桌面快捷方式图标已更新!"
方法6:使用资源文件(最专业的方法)
' 如果需要将图标嵌入到VBScript中,可以使用资源文件
' 但VBScript本身不支持嵌入资源,需要配合其他文件
' 示例:检查图标文件是否存在,不存在则创建
iconFile = "appicon.ico"
If Not FileExists(iconFile) Then
' 这里可以添加从网络或资源中提取图标的代码
' 或者复制预设的图标文件
MsgBox "请确保图标文件存在:" & iconFile
End If
Function FileExists(filePath)
Set fso = CreateObject("Scripting.FileSystemObject")
FileExists = fso.FileExists(filePath)
End Function
实用技巧:获取系统图标
' 使用系统内置图标
Set WshShell = WScript.CreateObject("WScript.Shell")
Set lnk = WshShell.CreateShortcut("我的程序.lnk")
' 常用系统图标路径
lnk.IconLocation = "%SystemRoot%\system32\shell32.dll,15" ' 文件夹图标
' lnk.IconLocation = "%SystemRoot%\system32\imageres.dll,101" ' 图片图标
' lnk.IconLocation = "%SystemRoot%\system32\SHELL32.dll,1" ' 文档图标
lnk.Save
注意事项:
权限问题:修改系统文件或某些位置的图标可能需要管理员权限
图标格式:支持.ico格式,也支持.exe/.dll中的图标资源
图标索引:
图标文件.dll,编号 格式可以指定DLL中的多个图标
路径问题:建议使用绝对路径或确保图标文件与脚本在同一目录
完整示例:创建带图标的程序启动器
' 保存为setup.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' 配置信息
appName = "我的应用程序"
exePath = "C:\MyApp\app.exe"
iconPath = "app.ico" ' 图标在当前目录
' 在桌面创建快捷方式
desktopPath = WshShell.SpecialFolders("Desktop")
shortcutPath = desktopPath & "\" & appName & ".lnk"
Set shortcut = WshShell.CreateShortcut(shortcutPath)
shortcut.TargetPath = exePath
shortcut.WorkingDirectory = fso.GetParentFolderName(exePath)
shortcut.IconLocation = fso.GetAbsolutePathName(iconPath)
shortcut.Description = appName
shortcut.Save
MsgBox "程序快捷方式已创建到桌面!", vbInformation, "安装完成"
选择哪种方法取决于您的具体需求。对于大多数情况,使用方法1创建带图标的快捷方式是最简单有效的。