3

C#を使用してWindowsの元のインストール日を取得するにはどうすればよいですか?

4

2 に答える 2

9

このWebサイトから、WMI(テストされていない)ではなくレジストリを使用します。

public static DateTime GetWindowsInstallationDateTime(string computerName)
{
    Microsoft.Win32.RegistryKey key = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, computerName);
    key = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", false);
    if (key != null)
    {
        DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        Int64 regVal = Convert.ToInt64(key.GetValue("InstallDate").ToString());

        DateTime installDate = startDate.AddSeconds(regVal);

        return installDate;
    }

    return DateTime.MinValue;
}
于 2012-06-21T07:34:57.077 に答える
1

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateは、Unixタイムスタンプを使用するWindows InstallDateですが、技術的には間違った日付です。

説明させてください。

UNIXタイムスタンプの定義は、タイムゾーンに依存しません。UNIXタイムスタンプは、1970年1月1日木曜日の00:00:00協定世界時(UTC)から経過した秒数として定義され、うるう秒はカウントされません。

つまり、コンピュータをワシントン州シアトルにインストールし、ニューヨーク州ニューヨークに移動した場合、HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateは、Windowsがあったシアトルのタイムゾーンではなく、ニューヨークのタイムゾーンで日付を表示します。オリジナルがインストールされています。日付が間違っています。コンピュータが最初にインストールされたタイムゾーンが保存されていません。

解決

  1. コンピューターのタイムゾーンを変更します(時計を右クリック->日付/時刻の調整->タイムゾーンの調整)を、Windowsがインストールされた、または最初にオンにしたタイムゾーンに変更します。次に、systeminfo.exeを実行して/i「元のインストール日」を見つけます
  2. HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateただし、Windowsがインストールされた、または最初にオンになったタイムゾーンを追加しました。
于 2017-04-07T23:51:13.140 に答える