我正在嘗試更改快捷方式,.LNK文件的參數。我有這個代碼:無法使用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
而我越來越奇怪的行爲。我在桌面上有兩個快捷方式,分別是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
三次,三個消息框彈出說「-m你好」,意思是shellLink.Save
執行沒有錯誤。但沒有任何鏈接文件被更改。但是,如果我在沒有管理權限的情況下運行,桌面上的兩個鏈接文件會發生更改,但第三個鏈接文件不會更改。 此外,有時,由於某些未知的原因,我無法讀取shellLink.TargetPath
屬性,爲了弄清楚這是我需要編輯的正確鏈接/快捷方式。
我的問題是我做錯了什麼,是否有任何其他(更好)的方式來改變.LNK(快捷方式)文件中的參數?我還要提到,我運行Windows 10
虛擬化是一個問題嗎? –
你是什麼意思?我在物理計算機上運行,沒有虛擬機。 – clzola
UAC導致虛擬化。如果您嘗試寫入僅管理員密鑰/文件,則會將其重定向到其他位置,以便您的程序認爲它可以正常工作(但在其他地方,它可以在您認爲的位置工作)。以管理員身份運行時,不會發生。要告訴打開任務管理器的詳細信息選項卡中的虛擬化列(右鍵單擊Win 10上的列標題 - 在早期版本的「處理選項卡」和「查看」菜單上)。 –