无法使用VBScript

时间:2016-12-13 14:03:17

标签: .net windows vbscript registry

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

现在,通过运行我的vbscript,此命令执行Wscript.Echo shellLink.Arguments三次,并且三个MessageBoxes弹出窗口“-m Hello”,意味着shellLink.Save已执行且没有错误。但没有一个链接文件被更改。但是,如果我在没有管理权限的情况下运行,则桌面上的两个链接文件会更改,但第三个链接文件不会更改。 此外,有时候,由于某种未知的原因,我无法阅读shellLink.TargetPath属性,我需要知道这是我需要编辑的正确链接/快捷方式。

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

1 个答案:

答案 0 :(得分:2)

使用

Set oShellLink = WshShell.CreateShortcut(objFile.Name)

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

改变这个:

Set oShellLink = WshShell.CreateShortcut(objFile.Name)

进入这个:

Set oShellLink = WshShell.CreateShortcut(objFile.Path)

问题就会消失。