質問

製品 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プロパティを使用するだけです!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top