通常、Windows XPでは、インストールされているプログラムの場所を知りたい場合は、[プロパティ]をクリックするだけで、実行可能ファイルの場所が表示されます。
Windows 7では、私は同じことを行い、これを取得します。
ショートカットに基づいてプログラムの場所を確認するにはどうすればよいですか?ただし、一部のプログラムでは「ターゲット」の下にショートカットが表示されることに気付きましたが、たとえばiTunesの場合はそうではありません。
表示されているのは、アドバタイズされたショートカットと呼ばれる特別なショートカットです。ショートカットは実際には、Windowsインストーラ実行可能ファイルであるmsiexec.exe
にリンクしています。アドバタイズされたショートカットを使用すると、インストーラー作成者はアプリケーションの一部のみをインストールし、アドバタイズされたショートカットを介してアクセスしたときに追加の部分をインストールできます。また、Windowsインストーラーは、アプリケーションが実行されるたびに、インストールされているすべてのファイルの整合性を自動的にチェックするため、実行時にアプリケーションが有効であることを確認できます。
これが Stack Overflowの質問 であり、アドバタイズされたショートカットに関する情報が少しあります。
ショートカットが最終的に実行する実行可能ファイルを見つけることは簡単な作業ではなく、レジストリを掘り下げる必要があります。 ヒューの提案 の方がはるかに単純です。
私はwin 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インストーラーと関係があります。実行可能ファイルを見つけるには、いつでも実行して、パスを取得するために Process Explorer を使用できます-私の場合、C:\Program Files\Microsoft Office2K\Office\WINWORD.EXE
。
同様の問題があり、タスクマネージャー(Ctrl-Alt-Delete →Start Task Manager)Applicationsタブで(openitit後の)アプリケーションを検索します。
目的のアプリケーションを右クリックしてメニューを表示し、[プロセスに移動]を選択します。これは、アプリに関連付けられているプロセスをProcessesタブで示します。
次に、プロセスを右クリックしてメニューを表示し、プロパティまたはファイルの場所を開くを選択して詳細を確認します。
モジュールを使用せずに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フォーラム から):
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 Installer Module )
get-msiproductinfo | where { $_.ProductState -match "Installed" } | fl AdvertisedProductName, InstallLocation
regedit
を開き、プログラム名を検索します。 「再検索」はほとんど必要ありません(F3)しかし、最終的にはフォルダが見つかります。
私の場合、それはHKEY_CLASSES_ROOT\Applications\<name of app>\Shell\open\command
ユーザーアカウント制御をアクティブにしている場合、UACボックスが許可、キャンセルを要求すると、多くの場合、「詳細」というタイトルの付いた別の(多くの人が見落としている)ドロップダウン矢印が表示されます。詳細をクリックすると、ターゲットの実際の場所が表示されます。
追伸私がこの問題を思い出すと、Windows 7を過ぎてXPを過ぎたとしても、ショートカットを右クリックしてプロパティを選択しても、ターゲットが表示されないことがよくありました。次に、アプリを起動し、タスクマネージャーを開き、リストでアプリを右クリックして、[プロセスに移動]を選択し、プロセスを右クリックして、開いているファイルの場所(またはプロパティ)を選択します。 UACを使用すると、手順が少なくなります。
うまくいくかもしれないトリックはこれです:スタートアップCMDと実行:
dir C:\ iTunes/s/b
正確に「iTunes」という名前のファイルまたはディレクトリを報告します(大文字と小文字は区別されません)。複数の固定ドライブがある場合は、そのドライブについても繰り返す必要がある場合があります。
または、「不明なフォルダ」(ここではiTunes)にファイルを作成し、ディスク上でそのファイルを探すことができます。
dir C:\ * testfilenumber1 */s/b