通常在 Windows XP 上,如果我想知道已安装程序的位置,我只需单击“属性”,它就会显示可执行文件的位置。
在 Windows 7 上,我做了同样的事情,得到了以下结果:
我如何根据快捷方式找到程序的位置?不过我注意到,对于某些程序,它确实在“目标”下显示快捷方式,但对于 iTunes 则不是这样。
答案1
您看到的是称为“通告快捷方式”的特殊快捷方式。这些快捷方式实际上链接到msiexec.exe
Windows Installer 可执行文件。通告快捷方式允许安装程序作者仅安装其应用程序的部分内容,然后通过通告快捷方式访问时安装其他部分。每次运行应用程序时,Windows Installer 还会自动检查所有已安装文件的完整性,因此您可以确保应用程序在运行时有效。
这里有一个Stack Overflow 问题提供有关所宣传的快捷方式的更多信息。
找到快捷方式最终运行的可执行文件不是一项简单的任务,需要对注册表进行一些挖掘。 休的建议可能简单得多。
答案2
我也对 Windows XP 下的一些快捷方式有同样的疑问。我试过赛格威但readshortcut
它没有告诉我真正的目标是:
$ readshortcut.exe -fa "Microsoft Word.lnk"
Target: /cygdrive/c/WINDOWS/Installer/{00000409-78E1-11D2-B60F-006097C998E7}/wordicon.exe
Working Directory:
Arguments:
Show Command: Normal
Icon Library: /cygdrive/c/WINDOWS/Installer/{00000409-78E1-11D2-B60F-006097C998E7}/wordicon.exe
Icon Library Offset: 0
Description: Create and edit text and graphics in letters, reports, Web pages, or e-mail messages by using Microsoft Word.
因此它们显然与 Windows Installer 有关。要找到可执行文件,您可以随时运行它并使用进程探索器获取路径-就我而言,C:\Program Files\Microsoft Office2K\Office\WINWORD.EXE
。
答案3
我遇到了类似的问题,并且能够使用任务管理器(Ctrl- Alt- Delete→启动任务管理器)在打开后找到该应用程序应用标签。
右键单击所需的应用程序以调出菜单并选择转至流程。这将显示与应用程序关联的进程流程标签。
然后,右键单击该进程以调出菜单并选择特性或者打开文件所在位置了解更多。
答案4
尝试以下任一方法(来自Tek-Tips 论坛):
脚本语言
' GetRealTarget.vbs
' This version needs to be run under wscript engine rather than cscript
' Pass the full path to an MSI "Advertised Shortcut" lnk file (including the extension) as a parameter
' e.g. assuming that we have a default install of Office 2003 for All Users:
' GetRealTarget "C:\Documents and Settings\All Users\Start Menu\Programs\Microsoft Office\Microsoft Office Excel 2003.lnk"
' Displays fully resolved target for the MSI shortcut
Option Explicit
Dim MSITarget
On Error Resume Next ' just some simple error handling for purposes of this example
If wscript.arguments.count = 1 Then ' did actually pass an MSI advertised shortcut? Or, at least, a parameter that could be such a thing?
With CreateObject("WindowsInstaller.Installer")
Set MSITarget = .ShortcutTarget(wscript.arguments(0))
If Err = 0 then
MsgBox .ComponentPath(MSITarget.StringData(1), MSITarget.StringData(3))
Else
MsgBox wscript.arguments(0) & vbcrlf & "is not a legitimate MSI shortcut file or could not be found"
End If
End With
End If
On Error Goto 0
电源外壳(安装此Windows 安装程序模块)
get-msiproductinfo | where { $_.ProductState -match "Installed" } | fl AdvertisedProductName, InstallLocation