我正在尝试更改快捷方式.LNK文件的参数。我有这段代码:
Set objFolder = fileSystem.GetFolder(folderPath)
Set colFiles = objFolder.Files
For Each objFile in colFiles
If ( InStr(objFile.Name, ".lnk") ) Then
Set oShellLink = WshShell.CreateShortcut(objFile.Name)
Wscript.Echo oShellLink.TargetPath
if ( InStr(oShellLink.TargetPath, "test.exe") ) Then
UpdateShortcut(oShellLink)
End If
End If
Next
Function UpdateShortcut(shellLink)
shellLink.Arguments = "-m Hello"
shellLink.Save
Wscript.Echo shellLink.Arguments
End Function
我的行为非常奇怪。我在桌面上有两个快捷方式,名为Test.lnk
和Test - Copy.lnk
,另一个位于C:\ProgramData\Microsoft\Windows\Start Menu\Programs
。为了修改第三个,我需要写权限,所以我在我的vbsript开头有这个代码:
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
WScript.Quit
End If
现在,通过运行我的vbscript,此命令执行Wscript.Echo shellLink.Arguments
三次,并且三个MessageBoxes弹出窗口“-m Hello”,意味着shellLink.Save
已执行且没有错误。但没有一个链接文件被更改。但是,如果我在没有管理权限的情况下运行,则桌面上的两个链接文件会更改,但第三个链接文件不会更改。
此外,有时候,由于某种未知的原因,我无法阅读shellLink.TargetPath
属性,我需要知道这是我需要编辑的正确链接/快捷方式。
我的问题是我做错了什么,还有其他(更好的)方法来更改.LNK(快捷方式)文件中的参数吗?另外我应该提一下,我正在运行Windows 10。
答案 0 :(得分:2)
使用
Set oShellLink = WshShell.CreateShortcut(objFile.Name)
在当前工作目录中创建/修改快捷方式,因此您基本上在不同的位置创建新的快捷方式,而不是修改现有的快捷方式。
改变这个:
Set oShellLink = WshShell.CreateShortcut(objFile.Name)
进入这个:
Set oShellLink = WshShell.CreateShortcut(objFile.Path)
问题就会消失。