製品 GUID を使用してアプリケーションのインストール日を取得するマネージ API はありますか?
ありがとう。スコット
ありがとうロブ!以下に完全な 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);
}
その情報に到達するための「適切な」方法は、:: MsiGetProductInfo()を使用することです。PInvokeは些細なことです。
それを行うAPIについては知りませんが、レジストリから直接値を読み取ろうとすることができます. 次のキーを確認します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
InstallDate = 20081004
アンインストール キーの下に保存されている情報は、たとえば [コントロール パネル] -> [プログラムの追加と削除] に表示されます。
別の「適切な」方法は、インストーラーによって「確実に」追加されることがわかっているファイルの作成日を取得することです。私の場合、それは Inno setup v5 によって (再) 作成された "unins000.exe" です。PInvoke は関係ありませんが、FileInfo の Exists プロパティと CreationTime プロパティを使用するだけです。