Windowsのインストール日時を確認するにはどうすればよいですか?


134

これはちょっとおかしな質問のように聞こえるかもしれませんが、Windowsのインストール日時を(できればAPI /レジストリキーを介して)どうやって確認できますか?

これまでに思いつくことができる最善の方法は、C:\ Windowsのさまざまなファイルを見て、推測してみることです...しかし、それは必ずしも良い解決策ではありません。

回答:


90

regedit.exe行く:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate

1970年1月1日からの秒数で示されます(注:Windows 10の場合、この日付は、元のインストール日付ではなく、最後の機能更新がインストールされた日付になります)。

この数値を読み取り可能な日付/ 時刻に変換するには、このUnix時間変換オンラインツールのフィールド「UNIX TimeStamp:」に10進値を貼り付けるだけです


3
すばらしいですね。その情報を入手するために特別な場所はありますか、それとも知っていましたか。
無料のヌー08年

5
Windowsがディスクイメージを使用してインストールされた場合を除いて、うまく機能します。この問題を解決するためにユーザーのプロファイルの作成を確認する方法はありますか?
バーナード・ヴァンダーBeken

8
doesntの仕事は、最新のサービスパック/更新日時(EA現在のバージョンをインストール反映し、元のバージョンには、時間をインストールしていない。
user3800527

2
システムのインストール日ではなく、Windowsの最終更新日が表示されると思います。
Tharindu Sathischandra

私のWindows 7インストールでは、その登録場所であるSP1にInstallDateが表示されません。
user734028

175

' code-challenge 'で無視できる別の質問:問題に答えるためのいくつかのソースコード実行可能ファイルがありますが、完全ではありません。
誰でも自分のコンピューターで実行できるvbスクリプトを見つけて、期待どおりの結果が得られますか?


systeminfo|find /i "original" 

あなたの実際の日付...ない秒数与える;)
として、サミーの コメントを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;

代替案として、CoastNコメントで提案しています

system.ini-file一般的なWindowsの展開で手つかずのまま、あなたは実際には次onelinerを使用してインストール日付を取得することができます:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime

2
理由がわかりました。Windowsが英語ではないからです。:)
Pedro77 2013年

3
systeminfo|find /i "original"「元のインストール日」のみをフィルタリングするために使用します。「install」を文字列として使用すると、必要以上の情報が得られます。また、ロケールが英語でない場合、これはおそらく機能しません。言語に合わせる必要があります。スウェーデン語では、これはドイツ語では「ursprungligt」と「ursprüngliches」になります。
Samir

1
私にとって、systeminfo | find / i "original"は6/30/2017を返しました。これは、マシンを4年ほど使用していたため、Windowsの更新である必要がありました。
Tim

1
私はこれを経験しましたが、デフォルトで245の修正プログラムを適用すると、CMDウィンドウには「systeinfo」出力全体を表示するのに十分な垂直線がありませんでした。ちょっと頭を掻いてた。:これはそれを修正するために、その後stackoverflow.com/questions/1740876/...
asdf30

1
2週間前にシステムをインストールしたことを示していますが、実際には1〜2年でした。これは最後の大規模なアップグレードの日付のようです。
ハンス・

48

ここには十分な答えがありますが、5セント入れたいと思います。

以前のインストールの上にWindows 10がインストールされ10/30/2015、Creators Updateがインストールされ04/14/2017ています。私の前に回答で説明されているすべての方法で、Creators Updateのインストール日がわかります。

元のインストール日

Windows 10の実際の(クリーン)インストール日と一致するいくつかのファイルの作成日を見つけることができました。

  • C:\Windows

C:\ Windowsファイルが少ない

  • C:\

C:\ファイルが少ない


7
他の答えよりも優れていますが、イメージ化された展開はどうですか?
user3800527

7
これは間違いなく正しい答えに近いです。他のソリューションは、Windows 10のアップグレードでは機能しません。しかし、ここにリストされている5つのファイル/フォルダーのどれも私のシステムでは正しい日付を持っていませんでした(一部は後で、一部は実際にはより早い)。ただし、システム上に正しい日付の1つのファイルと2つのフォルダーが見つかりました:C:\ Windows \ hbcikrnl.ini、C:\ Windows \ symbols \、およびC:\ Windows \ CSC \。したがって、おおよその時間がわかっている場合は、C:\ Windows \に移動して、システムシステムファイルを表示し、日付で並べ替えて、適切なものを見つけます。
Matt Jacobi

私のWindows 10 system.iniの場合、BOOTNXTとbootmgrは正しい日付でした。Win.iniと$ Recycle.Binの方が新しい日付でした。
キース

system.ini私のWindows 7および2008マシンではの日付は意味がありません。インストールソースから作成されたタイムスタンプがインストール時にコピーされているようです。C:\pagefile.sys正しいタイムスタンプがありました。
Daniel Sokolowski、2018年

38

コマンドプロンプトを開き、「systeminfo」と入力してEnter キーを押します。システムが情報を取得するのに数分かかる場合があります。結果ページには、「システムインストール日」というエントリがあります。これがWindowsのインストール日です。このプロセスは、XP、Win7、およびwin8でも機能します。


1
これを行うには、管理者である必要があることに注意してください。
Barrieリーダー

2
Windows 7では、これにより「元のインストール日」エントリが表示されますが、これは何らかの理由で11.1.2002であり、明らかに正しくありません:(
silverchair

18

Windows 7のインストール日時を確認する方法:

これを見てください...

  • 開始> CMDを入力
  • systeminfoを入力してください

それでおしまい; 次に、マシンに関するすべての情報を表示できます。非常に簡単な方法


13

PCのオペレーティングシステムのインストール日を知りたいと思ったことはありませんか?これは、PCオペレーティングシステムがインストールされた(または最後にアップグレードされた)日付と時刻をすばやく簡単に見つける方法です。

コマンドプロンプトを開き(start-> run-> type cmd-> hit enter)、次のコマンドを実行します

systeminfo | / i「インストール日」を見つける

数秒でインストール日が表示されます


3
メジャーサービスパックをインストールするまでは、その日付が反映されます
user3800527 '29

12

Powershellで次のコマンドを実行します。

systeminfo | Select-String "Install Date:"

2
Select-Stringを使用するには、Windows PowerShellバージョン> 3.0を使用する必要がありますfind /i
sactiw

5

Windows 10 OSにはさらに別のレジストリサブキーがあり、これはSYSTEMハイブファイルにあります。

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

ここでのインストール日付情報は、元のコンピューターOSインストール日付/時刻です。また、更新がいつ開始されたか、つまり

 Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)."

もちろん、これは更新が終了したときではなく、ユーザーは再起動する代わりにプロンプ​​トが表示されたときにオフにすることを選択することもできます...

更新は実際には別の日に完了する可能性があり、

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)"

更新を開始した日付/時刻が反映されます。


4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDateおよびsysteminfo.exeが誤った日付を生成します

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

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

この影響は、このプログラムの実行中にタイムゾーンを変更すると、日付が誤ってしまうことです。タイムゾーンの変更を考慮するために、実行可能ファイルを再実行する必要があります。

ただし、WMI Win32_Registryクラスからタイムゾーン情報を取得できます。

InstallDateは、Microsoft TechNetの記事「WMIを使用した日付と時刻の操作」によるUTC形式(yyyymmddHHMMSS.xxxxxx±UUU)であり、特にxxxxxxはミリ秒、±UUUはグリニッジ標準時とは分数の違いです。

 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);      
    }

UNIXタイムスタンプの定義には、タイムゾーンUTCが含まれています。コンピュータがニューヨーク時間の午後6時とシアトル時間の午後3時に同じ日にインストールされている場合、それらは同じUTCにインストールされているため、同じUNIXタイムスタンプになります。シアトルで2018年4月1日午後3時にインストールしてニューヨークに移動し、UTCから現地時間に変換した場合、2018年4月1日午後6:00と表示されます。シアトルにインストールしたときのニューヨークの:00 PM。
jla 2018年

ありがとうjla、私は私の記事で明確ではありませんでした。プログラムの実行中にオンザフライでタイムゾーンを変更しても、タイムゾーンの変更は反映されません。タイムゾーンを有効にするには、プログラムを再起動する必要があります。これは、Powershellと同じ動作です。
マーカス

InstallDateは、現在のタイムゾーンが適用されたローカル時間と、+ XXX形式のタイムゾーンを返します。タイムゾーンが変わると、インストール日とタイムゾーンも変わります。UTCでのインストール日が2000-01-01T12:00:00Zの場合。InstallDateは20000101120000.000000 + 000です。タイムゾーンをUTC + 5に設定すると、20000101170000.000000 + 300になります。上記のコードを使用すると、タイムゾーンが2回追加されます。UTC日付を取得するには、 "InstallDate ="行を次のように変更する必要があります。InstallDate = new DateTime(year、month、date、hour、mins、secs、msecs、DateTimeKind.Utc)-UTCoffset;
ヘスス・フェルナンデスDiéguez

3

ほとんどの場合、c:\ pagefile.sysの作成日はかなり信頼できると思います。これは、次のコマンドを使用して簡単に取得できます(WindowsがC:にインストールされている場合)。

dir /as /t:c c:\pagefile.sys

「/ as」は「システムファイル」を指定します。それ以外の場合は見つかりません。「/ t:c」は、「作成」を表示するように時間フィールドを設定します。


1
これにより、ページファイルの作成日がわかります。これは、OS自体のインストール日とはまったく関係ありません。さまざまな理由で再作成でき、本当に必要な場合は改ざんすることもできます。それは信頼できる方法ではありません。
アレハンドロ

1
最初のインストール時に作成されるため、「完全に無関係」ではありません。したがって、ある時点で意図的に再作成または削除されていない限り、「ほとんどの場合」、作成日はアップグレード後も維持されるため、最初のインストール日と同じになります。はい、100%信頼できるわけではありませんが、迅速かつ簡単であり、実際よりも多くのケースで正確だと思います。ここの答えの多くよりも間違いなくそうです。
MoonDogg 2018年

そのファイルはいつでも再作成できますが、メソッドが100%の時間で正しい結果を保証しない場合、誰もそれを実際に信頼することはできません。
Slava Murygin

2

WMICでWindowsのインストール日を確認する

wmic osはinstalldateを取得します


1
これはおそらくInstallDateレジストリキーを読み取るだけで、同じ問題があります。ビルドの更新時に変更されます。
アンデルス

1

Speccyを使用します。オペレーティングシステムセクションにインストール日が表示されます。 http://www.piriform.com/speccy


1
プログラミングソリューションではありません。Powershell(たとえば)が操作できるインターフェイスの種類がある場合は、それをリストします。
タイラーモンニー

1

"windows"や "program files"などのシステムドライブ内の任意のフォルダを確認することもできます。フォルダを右クリックし、プロパティをクリックして、一般タブの下でフォルダが作成された日付を確認します。


5
有効ですが、これはプログラミングソリューションではありません
Matt Wilko

@Matt彼はNatural Lenguajeでアルゴリズムを提供するので、人間のデバイスでそれをコンパイルしてください!:D
ジョナサン

3
イメージベースのインストール(.WIMファイル)を使用する新しいバージョンのWindowsでは、作成日はMicrosoftがイメージを作成した日付であり、OSが特定のマシンにインストールされた日付ではありません。
ctype.h

1

RunCommandで書き込み"MSINFO32"とヒットを入力すると、システムに関連するすべての情報が表示されます


インストール時間を除くすべての情報。Windows 7 SP1。
Pavel Vlasov


0

WindowsKey+ Rを押して入力cmd

コマンドウィンドウで次のように入力します。

systeminfo | find /i "Original"

(古いバージョンのウィンドウの場合、すべて大文字で「ORIGINAL」と入力します)。


誰もが反対票を投じた理由を知っていますか?私のために働いた、それはおそらく何らかの理由で正確ではないのでしょうか?反対票を投じるときに説明するかもしれません
russelrillema '16

@russelrillema最後の主要なサービスパックはこの日付を上書きします。
Don Tomato

Windows 10 v1809がある場合は、[設定]> [システム]> [バージョン情報]に移動します。Windows仕様を検索すると、「インストール先」という名前のフィールドがあります。(注:それが古いバージョンのWindowsで機能するかどうかは不明です)
abdullahjavaid86

0

あなたは単にWindowsフォルダの作成日を確認することができます(それを右クリックしてプロパティを確認してください):)


0

これはPowerShellで実行できます。

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\' -Name InstallDate |
    Select-Object -Property @{n='InstallDate';e={[DateTime]::new(1970,1,1,0,0,0,0,'UTC').AddSeconds($_.InstallDate).ToLocalTime()}}

0

次のpowershellコマンドを試してください:

Get-ChildItem -Path HKLM:\System\Setup\Source* | 
 ForEach-Object {Get-ItemProperty -Path Registry::$_} | 
     Select-Object ProductName, ReleaseID, CurrentBuild, @{n="Install Date"; e={([DateTime]'1/1/1970').AddSeconds($_.InstallDate)}} | 
         Sort-Object "Install Date"

これはほぼ真実であり、HKLM:\ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersionのキーを変更するビルドの更新が考慮されるため、さらに注意する必要がありますが、システムがソースOSのキーも存在しないため、両方を組み合わせる必要があります。実際には(まだ)更新されておらず、最後のビルド更新の日付が欠落している
Syberdoor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.