Windowsのインストール日時を確認するにはどうすればよいですか?
質問
これはちょっと変わった質問のように聞こえるかもしれませんが、Windowsのインストール日時を(できればAPI /レジストリキー経由で)見つける方法はありますか?
これまでに思いついた最善の方法は、C:\ Windowsのさまざまなファイルを見て推測しようとすることです。しかし、それは正確な解決策ではありません。
解決
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
1970年1月1日からの秒数として指定されます。
その数値を読み取り可能な日付/時刻に変換するには、フィールド" UNIX TimeStamp:"に小数値を貼り付けるだけです。この Unix時間変換オンラインツール。
他のヒント
「 code-challenge 」の省略可能な別の質問:以下は、問題に答えますが、完全ではありません。
誰でも自分のコンピューターで実行できるvbスクリプトを見つけて、期待される結果が得られますか?
systeminfo|find /i "original"
実際の日付が表示されます...秒数ではありません;)
Sammy コメント、 find / i" install"
は必要以上のものを提供します。
また、これはロケールが英語の場合にのみ機能します。言語と一致する必要があります。
スウェーデン語の場合、これは" ursprungligt
"になります。および" ursprü ngliches
"ドイツ語用。
Windowsの PowerShell スクリプトでは、次のように入力できます。
PS > $os = get-wmiobject win32_operatingsystem
PS > $os.ConvertToDateTime($os.InstallDate) -f "MM/dd/yyyy"
WMIを使用して( Windows Management Instrumentation )
WMIを使用しない場合は、レジストリ値を読み取って変換する必要があります。
PS > $path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
PS > $id = get-itemproperty -path $path -name InstallDate
PS > $d = get-date -year 1970 -month 1 -day 1 -hour 0 -minute 0 -second 0
## add to hours (GMT offset)
## to get the timezone offset programatically:
## get-date -f zz
PS > ($d.AddSeconds($id.InstallDate)).ToLocalTime().AddHours((get-date -f zz)) -f "MM/dd/yyyy"
この投稿の残りの部分では、同じ情報にアクセスする別の方法を提供します。毒を選んでください;)
VB.Netでは、次のようになります。
Dim dtmInstallDate As DateTime
Dim oSearcher As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
For Each oMgmtObj As ManagementObject In oSearcher.Get
dtmInstallDate =
ManagementDateTimeConverter.ToDateTime(CStr(oMgmtO bj("InstallDate")))
Next
Autoit (Windowsスクリプト言語)では、次のようになります。
;Windows Install Date
;
$readreg = RegRead("HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\", "InstallDate")
$sNewDate = _DateAdd( 's',$readreg, "1970/01/01 00:00:00")
MsgBox( 4096, "", "Date: " & $sNewDate )
Exit
Delphy 7では、次のようになります。
Function GetInstallDate: String;
Var
di: longint;
buf: Array [ 0..3 ] Of byte;
Begin
Result := 'Unknown';
With TRegistry.Create Do
Begin
RootKey := HKEY_LOCAL_MACHINE;
LazyWrite := True;
OpenKey ( '\SOFTWARE\Microsoft\Windows NT\CurrentVersion', False );
di := readbinarydata ( 'InstallDate', buf, sizeof ( buf ) );
// Result := DateTimeToStr ( FileDateToDateTime ( buf [ 0 ] + buf [ 1 ] * 256 + buf [ 2 ] * 65535 + buf [ 3 ] * 16777216 ) );
showMessage(inttostr(di));
Free;
End;
End;
コマンドプロンプトを開き、「" systeminfo "」と入力します。 Enterキーを押します。システムが情報を取得するのに数分かかる場合があります。結果ページには、「システムのインストール日」というエントリがあります。これは、Windowsのインストール日です。このプロセスは、XP、Win7、およびwin8でも動作します。
Windows 7のインストール日時の確認方法:
こちらをご覧ください...
- 開始> CMDを入力
- systeminfoを入力
それだけです。その後、マシンに関するすべての情報を表示できます。非常に簡単な方法
PCのオペレーティングシステムのインストール日を知りたいと思ったことはありますか? PCオペレーティングシステムがインストールされた(または最後にアップグレードされた)日付と時刻を見つけるための迅速で簡単な方法を次に示します。
コマンドプロンプトを開き(start-> run-> type cmd-> hit enter)、次のコマンドを実行します
systeminfo | / i" install date"
を見つけます数秒でインストール日が表示されます
Powershellでコマンドを実行します:
systeminfo | Select-String "Install Date:"
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateおよびsysteminfo.exeは、 間違った日付 。
UNIXタイムスタンプの定義はタイムゾーンに依存しません。 UNIXタイムスタンプは、1970年1月1日木曜日の協定世界時(UTC)00:00:00から経過した秒数として定義され、うるう秒はカウントされません。
つまり、ワシントン州シアトルにコンピューターをインストールしてニューヨークに移動した場合、HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateはこれを反映しません。 間違った日付であり、コンピューターが最初にインストールされたタイムゾーンを保存しません。
この効果は、このプログラムの実行中にタイムゾーンを変更すると、日付が間違ってしまいます。タイムゾーンの変更に対応するには、実行可能ファイルを再実行する必要があります。
しかし、WMIからタイムゾーン情報を取得できます Win32_Registry クラス。
InstallDateは、Microsoft TechNet 記事" WMIを使用した日付と時刻の操作"ここで、xxxxxxはミリ秒で、&U177はグリニッジ標準時とは異なる分数です。
private static string RegistryInstallDate()
{
DateTime InstallDate = new DateTime(1970, 1, 1, 0, 0, 0); //NOT a unix timestamp 99% of online solutions incorrect identify this as!!!!
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Registry");
foreach (ManagementObject wmi_Windows in searcher.Get())
{
try
{
///CultureInfo ci = CultureInfo.InvariantCulture;
string installdate = wmi_Windows["InstallDate"].ToString();
//InstallDate is in the UTC format (yyyymmddHHMMSS.xxxxxx±UUU) where critically
//
// xxxxxx is milliseconds and
// ±UUU is number of minutes different from Greenwich Mean Time.
if (installdate.Length==25)
{
string yyyymmddHHMMSS = installdate.Split('.')[0];
string xxxxxxsUUU = installdate.Split('.')[1]; //±=s for sign
int year = int.Parse(yyyymmddHHMMSS.Substring(0, 4));
int month = int.Parse(yyyymmddHHMMSS.Substring(4, 2));
int date = int.Parse(yyyymmddHHMMSS.Substring(4 + 2, 2));
int hour = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2, 2));
int mins = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2 + 2, 2));
int secs = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2 + 2 + 2, 2));
int msecs = int.Parse(xxxxxxsUUU.Substring(0, 6));
double UTCoffsetinMins = double.Parse(xxxxxxsUUU.Substring(6, 4));
TimeSpan UTCoffset = TimeSpan.FromMinutes(UTCoffsetinMins);
InstallDate = new DateTime(year, month, date, hour, mins, secs, msecs) + UTCoffset;
}
break;
}
catch (Exception)
{
InstallDate = DateTime.Now;
}
}
return String.Format("{0:ddd d-MMM-yyyy h:mm:ss tt}", InstallDate);
}
speccyを使用します。 [オペレーティングシステム]セクションにインストール日が表示されます。 http://www.piriform.com/speccy
また、「windows」などのシステムドライブ内のフォルダをチェックすることもできます。および「プログラムファイル」。フォルダを右クリックし、プロパティをクリックして、一般タブの下でフォルダが作成された日付を確認します。
RunCommandで
" MSINFO32"
と入力してEnterキーを押します
システムに関連するすべての情報が表示されます
Windows 10 OSには、さらに別のレジストリサブキーがあります。これは、SYSTEMハイブファイルにあります:
> "\Setup\Source OS."
ここでのインストール日情報は、元のコンピューターOSのインストール日時です。また、更新がいつ開始されたかを示します。つまり、
"\Setup\Source OS (Updated on xxxxxx)."
これはもちろん、更新が終了したときではないかもしれません。ユーザーは、プロンプトが表示されたときに再起動するのではなく、オフにすることを選択できます...
更新は実際には別の日に完了することができます
> "\Setup\Source OS (Updated on xxxxxx)"
は、更新を開始した日付/時刻を反映します。
c:\ pagefile.sysの作成日は、ほとんどの場合、かなり信頼できると思います。このコマンドを使用して簡単に取得できます(WindowsがC:にインストールされている場合):
dir /as /t:c c:\pagefile.sys
「/ as」は「システムファイル」を指定します。指定しない場合は見つかりません。 「/ t:c」は、「作成」を表示するように時間フィールドを設定します。
WMICを使用してWindowsのインストール日を決定する
wmic os get installdate
WindowsKey + R を押して、 cmd
コマンドウィンドウで次のように入力します。
systeminfo | find /i "Original"
(古いバージョンのウィンドウでは、すべて大文字で「オリジナル」と入力します)。