インストールされているMSIからアップグレードコードをレジストリから取得する方法についてのヒントが必要です。実際にはHKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
から取得できる製品コードがあります。レジストリから製品コードのアップグレードコードを取得
今、アップグレードコード(製品コードに基づいて)をHKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UpgradeCodes
から取得したいと考えています。
私の問題は、製品コードが値の名前として使用されていることです。つまり、製品コードguidで値が空のREG_SZ
です。製品コードを取得する
一つの方法は、次のようになります。
PS HKLM:\SOFTW...Codes> Get-ItemProperty * | select -First 1 | gm TypeName: System.Management.Automation.PSCustomObject Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() 42F79228D77BA4A4EB5150F3DC090CE3 NoteProperty System.String 42F79228D77BA4A4EB5150F3DC090CE3= ...
にはどうすればPSCustomObject
プロパティ42F79228D77BA4A4EB5150F3DC090CE3
を持っているかどうかを確認することができますか?
もっとエレガントな方法があれば誰でも知っていますか?
** WMIを使用すると、レジストリキーを読み取って解釈する必要はありません。実際のアップグレードコードを適切な形式で自動的に取得します。この回答を参照してください:[**インストールされているMSIファイルのアップグレードコードはどのように見つけることができますか?**](https://stackoverflow.com/questions/46637094/how-can-i-find-the-upgrade-code-インストールされているmsiファイル/ 46637095#46637095)(VBScriptが一番下にあります)。 –
@SteinÅsmul:WMIを使用してインストールされたMSIを照会することは悪い考えです - >これを読んで - > https://stackoverflow.com/questions/25083520/wmi-select-from-win32-product-takes-a-long-time。 – Moerwald
私はこれについて十分認識していますが、パッケージ敷地が適切にインストールされていれば、自己回復はありません**。稼働しているのは**パッケージ不動産**の完全性チェック(確かに非常に遅くなります)ですが、不一致が見つかった場合にのみ自己修復が実行されます。ほとんどの場合、あなたが忙しい場合は自己修復をキャンセルすることができます。私は既に、この問題について、私がここで製品コードを見つける方法について警告します:[**インストールされたMSIセットアップの製品GUIDを見つけるにはどうすればいいですか?**](https://stackoverflow.com/questions/29937568/howインストールされているmsi-setup/29937569#29937569)を参照してください。 –