无法使用 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.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
现在,通过 运行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>)
问题就会消失。
我正在尝试更改快捷方式、.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.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
现在,通过 运行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>)
问题就会消失。