WindowsにインストールされているプログラムのGUID=を一覧表示するにはどうすればよいですか?または、MSIファイルがある場合、GUIDを見つけるのは簡単ですか?
OrcaでMSIファイルを調べていますが、GUIDを見つけるためにどこを調べればよいかわかりません。
ありがとう!
Windowsインストーラーデータベースの3つの主要なGUIDは、 パッケージコード 、 ProductCode 、および pgradeCode です。 1つ目は要約情報ストリーム(Orcaの[表示]メニュー)に格納され、その他はプロパティテーブルに格納されます。 (マージモジュールやパッチなどの他の形式のデータベースは、マージモジュールのGUIDまたはパッチコードGUID-それぞれ保存されているなど、同様の場所に同様のGUIDを持っていますパッケージコードと同じです。)
マシンでそれらを見つけるには、ProductCodeがよく使用されるUninstallキーを調べます。さらに良いことに、現在マシンにインストールされているものを列挙したい場合は、 MsiEnumProducts を呼び出すことができます。
mSIをインストールしてレジストリをチェックせずに、特定のMSIに含まれるProductNameおよびProductCode(ProductId)を知りたいだけの場合は、次のような関数を使用してPowerShellでMSI自体にクエリを実行できます( http:/ /www.scconfigmgr.com/2014/08/22/how-to-get-msi-file-information-with-powershell ):
function Get-MSIProperties {
param (
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[System.IO.FileInfo] $path,
[string[]] $properties = @('ProductCode', 'ProductVersion', 'ProductName', 'Manufacturer', 'ProductLanguage')
)
begin {
$windowsInstaller = (New-Object -ComObject WindowsInstaller.Installer)
}
process {
$table = @{}
$msi = $windowsInstaller.GetType().InvokeMember('OpenDatabase', 'InvokeMethod', $null, $windowsInstaller, @($Path.FullName, 0))
foreach ($property in $properties) {
try {
$view = $msi.GetType().InvokeMember('OpenView', 'InvokeMethod', $null, $msi, ("SELECT Value FROM Property WHERE Property = '$($property)'"))
$view.GetType().InvokeMember('Execute', 'InvokeMethod', $null, $view, $null)
$record = $view.GetType().InvokeMember('Fetch', 'InvokeMethod', $null, $view, $null)
$table.add($property, $record.GetType().InvokeMember('StringData', 'GetProperty', $null, $record, 1))
}
catch {
$table.add($property, $null)
}
}
$msi.GetType().InvokeMember('Commit', 'InvokeMethod', $null, $msi, $null)
$view.GetType().InvokeMember('Close', 'InvokeMethod', $null, $view, $null)
$msi = $null
$view = $null
return $table
}
end {
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($windowsInstaller) | Out-Null
[System.GC]::Collect()
}
}
通常(普遍的ではありませんが)、ソフトウェアがMSIベースのインストールを使用する場合、GUIDはUninstallエントリにあります。通常、キー名であるか、UninstallStringに表示されます。 /またはUninstallPath値。場合によっては簡単で、ProductGuid値があります。
アンインストールエントリはここにあります:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
64ビットバージョンのWindowsには、64ビットソフトウェア用と32ビットソフトウェア用の2つのキーがあります。
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall