イタリックテキスト
前提・実現したいこと
ここに質問の内容を詳しく書いてください。
お世話になります。
パソコンにインストールされている製品情報をC#からWindows Installerを通じて取得しようと
しております。
そこでNETで見つけた下記コードを元にC#に置換を行っています。
https://social.msdn.microsoft.com/Forums/windows/en-US/e5225e8e-6830-4ece-8897-f22117f92d1c/how-to-uninstall-an-msi-programmatically-if-productcode-is-not-provided
https://docs.microsoft.com/en-us/windows/desktop/Msi/installer-productsex
によると「ProductsEx」の戻り値は「RecordList」となっておりますが、
上記サイト同じように値を取得する方法が分かりません。
RecordList、Recordオブジェクトのサイトにも情報が記載されておらず取得方法が分かりません。
よろしければどなたか教えていただけますでしょうか。
宜しくお願い致します。
該当のソースコード
■VBS
Option Explicit Public installer, fullmsg, comp, prod, a, fso, pname, ploc, pid,contxt, sid, psorce, pcache, pvers Set fso = CreateObject("Scripting.FileSystemObject") Set a = fso.CreateTextFile("prodex.txt", True) ' Connect to Windows Installer object Set installer = CreateObject("WindowsInstaller.Installer") a.writeline ("Products") 'on error resume next For Each prod In installer.ProductsEx("", "", 7) pid = prod.ProductCode '**C#での値取得方法が知りたい** contxt = prod.Context sid=prod.usersid pname = prod.InstallProperty("InstalledProductName")'**C#での値取得方法が知りたい** psorce=prod.InstallProperty( "InstallSource") ploc =prod.InstallProperty( "InstallLocation") pcache = prod.InstallProperty("LocalPackage") pvers=prod.InstallProperty("VersionString") a.writeline (pid & " " & pname & " " & pvers & " installed at <" & ploc & "> from " & psorce & " Context " & contxt) Next ```■C# ```ここに言語を入力 Type installerType = Type.GetTypeFromProgID("WindowsInstaller.Installer"); Object installerObj = Activator.CreateInstance(installerType); Installer oMsi = installerObj as Installer; RecordList rl= oMsi.ProductsEx["", "", 7]; foreach (Record data in rl)//**Record型にすると例外(キャストNG)** { } foreach (var data in rl)//**varにすると例外は発生しませんが値の取得方法が分かりません。 **{ } ```### 補足情報(FW/ツールのバージョンなど) VS2017 .Net3.5 OS Win7以上 ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー