Ich versuche, Argumente der Verknüpfung, .LNK-Datei zu ändern. Ich habe diesen Code:Kann nicht ändern. LNK-Datei mit VBScript
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
Und ich bekomme wirklich seltsames Verhalten. Ich habe 2 Verknüpfungen auf dem Desktop mit den Namen Test.lnk
und Test - Copy.lnk
und eine in C:\ProgramData\Microsoft\Windows\Start Menu\Programs
. Um die dritte zu ändern, muss ich Schreibrechte, so habe ich diesen Code zu Beginn meiner vbsript:
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
WScript.Quit
End If
nun durch meine Vbscript ausgeführt wird, führt dieser Befehl Wscript.Echo shellLink.Arguments
dreimal und drei Message Popup "-m Hello" zu sagen, was shellLink.Save
bedeutet, wurde ohne Fehler ausgeführt. Aber keine der Link-Dateien wird geändert. Wenn ich jedoch ohne administrative Rechte arbeite, werden die beiden Link-Dateien auf dem Desktop geändert, aber die dritte nicht. Auch manchmal, aus einem unbekannten Grund kann ich nicht lesen shellLink.TargetPath
Eigenschaft, die ich brauche, um herauszufinden, ist dies der richtige Link/Verknüpfung, die ich bearbeiten muss.
Meine Frage ist was mache ich falsch und gibt es andere (bessere) Möglichkeit, Argumente in .LNK (Shortcut) -Datei zu ändern? Ich sollte auch erwähnen, ich bin mit Windows 10.
Ist Virtualisierung ein Problem? –
Wie meinst du das? Ich laufe auf einem physischen Computer, keine virtuellen Maschinen. – clzola
UAC verursacht Virtualisierung. Wenn Sie versuchen, in einen Admin-Schlüssel/eine Admin-Datei zu schreiben, wird diese an anderer Stelle umgeleitet, so dass Ihr Programm denkt, dass es funktioniert hat (aber es hat woanders funktioniert, wo Sie denken). Wenn es als Admin ausgeführt wird, passiert das nicht. Um zu sagen, aktivieren Sie die Spalte Virtualisierung auf der Registerkarte Details des Task-Managers (klicken Sie mit der rechten Maustaste auf die Spaltenüberschriften unter Win 10 - in früheren Versionen Process Tab und View-Menü). –