C#を使用してWindowsの元のインストール日を取得するにはどうすればよいですか?
質問する
5529 次
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があったシアトルのタイムゾーンではなく、ニューヨークのタイムゾーンで日付を表示します。オリジナルがインストールされています。日付が間違っています。コンピュータが最初にインストールされたタイムゾーンが保存されていません。
解決
- コンピューターのタイムゾーンを変更します(時計を右クリック->日付/時刻の調整->タイムゾーンの調整)を、Windowsがインストールされた、または最初にオンにしたタイムゾーンに変更します。次に、systeminfo.exeを実行して/i「元のインストール日」を見つけます
- HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateただし、Windowsがインストールされた、または最初にオンになったタイムゾーンを追加しました。
于 2017-04-07T23:51:13.140 に答える