无法使用 VBScript 修改 .LNK 文件

Cannot modify .LNK file using VBScript

我正在尝试更改快捷方式、.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

而且我的行为真的很奇怪。我在桌面上有 2 个快捷方式,分别名为 Test.lnkTest - 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

现在,通过 运行ning 我的 vbscript,此命令执行 Wscript.Echo shellLink.Arguments 三次,并弹出三个 MessageBoxes 提示“-m Hello”,这意味着 shellLink.Save 已正确执行.但是 link 个文件中的 none 个被更改了。但是,如果我 运行 没有管理权限,桌面上的两个 link 文件会发生变化,但第三个不会。 此外,有时,由于某些未知原因,我无法阅读 shellLink.TargetPath 属性,我需要它来确定这是正确的 link/shortcut 我需要编辑。

我的问题是我做错了什么,有没有其他(更好的)方法来更改 .LNK(快捷方式)文件中的参数?另外我要提一下,我是 运行ning Windows 10.

正在使用

Set oShellLink = WshShell.CreateShortcut(objFile.Name)

creates/modifies 当前工作目录中的快捷方式,因此您基本上是在不同的位置创建新的快捷方式,而不是修改现有的快捷方式。

改变这个:

Set oShellLink = WshShell.CreateShortcut(objFile.<b>Name</b>)

进入这个:

Set oShellLink = WshShell.CreateShortcut(objFile.<b>Path</b>)

问题就会消失。