如何更改桌面快捷方式的目标

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何更改桌面快捷方式的目标?
2006年11月12日 星期日 05:22
问:
您好,脚本专家!如何更改桌面快捷方式所指向的目标?例如,如果我将文件从一个服务器移动到另一个服务器,我希望能够使用脚本来更改指向该文件的快捷方式。
-- AK
答:
您好,AK。实际上,只要寻找解决办法的思路正确,有些脚本问题还是非常好解决的,您所提到的问题就是一个例子。如果您的思维方式与大多数脚本编写者一样,您首先会想到使用 WMI 或 WSH,而当事实证明这两种技术都行不通时,您可能会认为或许根本就无法使用脚本来更改快捷方式目标。怎么说才好呢,就在看似山穷水尽之时,能够使您柳暗花明的竟是 Shell 对象这个常被人忽视的‘朋友’。
Shell 对象是由一些不起眼的脚本对象组成的集合,其中的许多对象要么系统管理员使用甚少,要么在功能/速度/便利性方面逊色于其他脚本技术。但有时也会出现这样的情况:所有其他脚本技术都不起作用,而只有 Shell 对象能够解决问题。修改快捷方式属性恰好就属于这种情况。
我们假定您已经知道需要更改的桌面快捷方式所在的位置;在本示例中,我们假定“All Users”桌面文件夹中有一个名为“Accounts Payable Database.lnk”的快捷方式。我们可以据此编写以下脚本,将该快捷方式的目标更改为“//atl-fs-01/accounting/payable.exe”:
Const ALL_USERS_DESKTOP = &H19&

Set objShell = CreateObject("Shell.Application")
Set objFolder = space(ALL_USERS_DESKTOP)
Set objFolderItem = objFolder.ParseName("Accounts Payable Database.lnk")
Set objShellLink = objFolderItem.GetLink

objShellLink.Path = "//atl-fs-01/accounting/payable.exe"
objShellLink.Save()
首先是创建常量 ALL_USERS_DESKTOP,并将它的值设置为 &H19&。然后创建一个 Shell 对象实例,并使用“Namespace”方法将其绑定到桌面文件夹。我们使用“ParseName”方法链接到文件本身(请注意,我们仅指定了文件名“Accounts Payable Database.lnk”,并没有指定整个路径),然后使用“GetLink”方法来检索快捷方式信息。
后面的操作就简单了。我们将“Path”属性的值设置为新的快捷方式目标,然后调用“Save()”方法,将该值写入快捷方式本身。瞧!我们已更改了该快捷方式所指向的目标。
这里需要牢记的一点是,Shell 对象被设计为只能在本地计算机上使用,在远程计算机上无法创建 Shell 对象实例。如果需要在远程计算机上修改快捷方式,则需要将此脚本作为登录脚本的一部分来运行,或使用类似于 2004 年 9 月 1 日的您好,脚本专家!专栏中所描述的过程,先将脚本复制到远程计算机上,然后在该计算机上启动复制的脚本。

相关文档
最新文档