[Windows] プログラムのインストール日

プログラムの追加と削除、あるいは、プログラムのアンインストールで表示される「インストール日」はどこから来るのか。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\アプリケーション

のサブキーInstallDateにあるものが最初に使われる。

ここに書かれていない場合はどうなるのか、というと、以下のtechnetの質問の答えに書かれていた。

プログラムの追加と削除のインストール日付について
http://social.technet.microsoft.com/Forums/ja-JP/w7itprogeneralja/thread/ddddaa17-0b62-45b0-bbb8-4e6c3112d6d0

ここで参照されている英語の記事は以下。

Set Program Access and Computer Defaults (SPAD)
http://msdn.microsoft.com/en-us/library/cc144162.aspx

この記事によれば、InstallDateサブキーはオプショナルなので記録されていないことがある。記録されていない場合は、Windows Vista以降ではプロダクトのレジストリが更新された日時を代用することになっている、とある。ただし、これはどのサブキーの更新でも日時が変わってしまうためインストールされた日付とは異なる可能性がある。

手元のPCで見ると、たいていのアプリケーションではInstallDateが記録されている。逆に、これが記録されていないということはインストールに何らかのトラブルがあったと判断していいのではないか。

Uninstallの下のサブキーは文字列も入れられるようなのだ。手元で見るとMicrosoft製品をはじめ、Tera termなど有名なフリーソフトウェアも文字列で名称が入っているものがいくつかある。ちょっと調べた範囲ではWiXだとここに文字列を入れる方法がなさそう。
Uninstallの下のサブキーとして使用するGUIDは、WiXだとPackageエレメントのId属性の値(GUID)になる。

レジストリの変更日時はC#のclassでは適当なメソッドがない。WindowsのAPIではRegQueryInfoKey関数を使って取得することができる。

RegQueryInfoKey
http://msdn.microsoft.com/en-us/library/ms724902(VS.85).aspx

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。