回答:
表示されているのは、アドバタイズされたショートカットと呼ばれる特別なショートカットです。ショートカットmsiexec.exe
は、実際にはWindows Installer実行可能ファイルにリンクしています。アドバタイズされたショートカットを使用すると、インストーラー作成者はアプリケーションの一部のみをインストールし、アドバタイズされたショートカットを介してアクセスしたときに追加のピースをインストールできます。また、Windowsインストーラーは、アプリケーションが実行されるたびに、インストールされているすべてのファイルの整合性を自動的にチェックするため、実行時にアプリケーションが有効であることを確認できます。
ここでは、宣伝されているショートカットについてもう少し情報を提供するStack Overflowの質問を示します。
ショートカットが最終的に実行する実行可能ファイルを見つけることは簡単なタスクではなく、レジストリを掘り下げる必要があります。 ヒューの提案は、おそらくはるかに単純です。
私は勝利XPの下でいくつかのショートカットのために同じことを疑問に思いました。私が試したのCygwinの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と関係があります。実行可能ファイルを見つけるには、いつでもそれを実行し、Process Explorerを使用してパスを取得できます-私の場合はC:\Program Files\Microsoft Office2K\Office\WINWORD.EXE
。
私は同様の問題を持っていたし、タスクマネージャを使用することができました(Ctrl- Alt- Delete→ スタートタスクマネージャをして(openingit後の)アプリケーションを見つけるために)アプリケーションタブ。
目的のアプリケーションを右クリックしてメニューを表示し、[ プロセスに移動 ]を選択します。これにより、[プロセス ]タブでアプリに関連付けられているプロセスが表示されます。
次に、プロセスを右クリックしてメニューを表示し、[ プロパティ]または[ファイルの場所を開く ]を選択して詳細を確認します。
モジュールを使用せずに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))
以下のいずれかを試してください(Tek-Tips Forumsから):
VbScript
' 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
PowerShell(このWindowsインストーラーモジュールのインストール)
get-msiproductinfo | where { $_.ProductState -match "Installed" } | fl AdvertisedProductName, InstallLocation
ユーザーアカウント制御をアクティブにしている場合、UACボックスで[許可]、[キャンセル]を求めると、「詳細」というタイトルの別の(多くの人が見落としている)ドロップダウン矢印がよく表示されます。[詳細]をクリックすると、ターゲットの実際の場所が表示されます。
PSこの問題を思い出すと、Windows 7、XPを過ぎても、ショートカットを右クリックしてプロパティを選択してもターゲットが表示されないことが多い98に勝ちます。次に、アプリを起動し、タスクマネージャーを開き、リストでアプリを右クリックし、[プロセスに移動]、[プロセスを右クリック]、[ファイルの場所(またはプロパティ)を開く]を選択する必要がありました。現在、UACの手順は少なくなっています。
実行可能ファイルの場所を見つける最も簡単な方法: