Windows 7 查找已安装程序的位置

7wp*_*7wp 26 windows-7 shortcuts

通常在 Windows XP 上,如果我想知道已安装程序的位置,我只需单击“属性”,它就会显示可执行文件所在的位置。

在 Windows 7 上,我做同样的事情,我得到了这个:

替代文字

如何根据快捷方式找出程序所在的位置?然而,我确实注意到,对于某些程序,它确实在“目标”下显示了一个快捷方式,但例如在 iTunes 中则不然。

hea*_*vyd 21

您看到的是称为广告快捷方式的特殊快捷方式。快捷方式实际上链接到msiexec.exeWindows 安装程序可执行文件。广告快捷方式允许安装程序作者仅安装其应用程序的一部分,然后在通过广告快捷方式访问它们时安装其他部分。每次运行应用程序时,Windows Installer 还会自动检查所有已安装文件的完整性,因此您可以确保应用程序在运行时有效。

这是一个堆栈溢出问题,其中包含有关广告快捷方式的更多信息。

找到快捷方式最终运行的可执行文件并不是一项简单的任务,需要对注册表进行一些挖掘。 休的建议可能要简单得多。


Hug*_*len 17

我想知道在 win XP 下的一些快捷方式也有同样的事情。我尝试了Cygwinreadshortcut但它没有告诉我真正的目标:

$ 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.
Run Code Online (Sandbox Code Playgroud)

所以它们显然与Windows Installer有关。要找到可执行文件,您始终可以运行它并使用Process Explorer获取路径 - 在我的情况下,C:\Program Files\Microsoft Office2K\Office\WINWORD.EXE.

  • +1并且它有效,但这对安全性来说很糟糕。如果一个可疑的应用程序在计算机上传播,而你想知道快捷方式指向什么而不实际运行它,微软应该让这变得非常简单。但留给我们自己的设备跳过箍。怎么可能还通过电话指导小老奶奶这样做呢。*咆哮* (7认同)

小智 7

我有一个类似的问题,并且能够使用任务管理器(Ctrl- Alt- Delete启动任务管理器)在“应用程序”选项卡中找到应用程序(打开后)。

右键单击所需的应用程序以显示菜单并选择Go To Process。这会在“进程”选项卡中显示与应用程序关联的进程

然后,右键单击该进程以调出菜单并选择“属性”或“打开文件位置”以了解更多信息。


小智 6

对于那些希望在不使用模块的情况下在 PowerShell 中执行此操作的人:

$lnk = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Adobe\Adobe Acrobat X Pro.lnk"
$WindowsInstaller = New-Object -ComObject WindowsInstaller.Installer
$ShortcutTarget = $WindowsInstaller.GetType().InvokeMember("ShortcutTarget","GetProperty",$null,$WindowsInstaller,$lnk)
$StringData1 = $ShortcutTarget.GetType().InvokeMember("StringData","GetProperty",$null,$ShortcutTarget,1)
$StringData3 = $ShortcutTarget.GetType().InvokeMember("StringData","GetProperty",$null,$ShortcutTarget,3)
$WindowsInstaller.GetType().InvokeMember("ComponentPath","GetProperty",$null,$WindowsInstaller,@($StringData1,$StringData3))
Run Code Online (Sandbox Code Playgroud)