マネージド コードからインストール日を取得する
-
03-07-2019 - |
質問
製品 GUID を使用してアプリケーションのインストール日を取得するマネージド API はありますか?
ありがとう。スコット
解決
"適切な"その情報を取得する方法は、:: MsiGetProductInfo()を使用することです。 PInvokeは簡単なはずです。
他のヒント
ありがとうロブ!以下に完全なC#の例を追加しました。
[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);
static void Main(string[] args)
{
Int32 len = 512;
var builder = new StringBuilder(len);
MsiGetProductInfo("{0db93d2f-a9e7-417f-9425-5e61e82c0868}", "InstallDate", builder, ref len);
var installDate = DateTime.ParseExact(builder.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture);
Console.WriteLine(installDate);
}
これを行うAPIについては知りませんが、レジストリから値を直接読み取ろうとすることはできます。次のキーを確認します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
InstallDate = 20081004
アンインストールキーの下に保存されている情報が表示されます。コントロールパネルで->プログラムの追加または削除。
レジストリの InstallDate キーは、特にプログラムが MSI 経由でインストールされていない場合 (たとえば、 Adobe Flash Player プラグイン、DAEMON Tools、7-ZIP、Picasa、TeamViewer、Mozilla Firefox).
別の「適切な」」方法は" sure"で知っているファイルの作成日を取得することです。インストーラーによって追加されます。私の場合、「unins000.exe」です。 Inno setup v5によって(再)作成されます。 PInvokeは関与しませんが、FileInfoのExistsプロパティとCreationTimeプロパティを使用するだけです!
所属していません StackOverflow