web-dev-qa-db-ja.com

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

これはちょっと変わった質問のように聞こえるかもしれませんが、Windowsのインストール日時を(できればAPI /レジストリキーを使用して)見つける方法はありますか?

これまでに思いついた最善の方法は、C:\ Windowsのさまざまなファイルを見て、推測しようとすることです...しかし、それは正確な解決策ではありません。

118
Free Wildebeest
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate

1970年1月1日からの秒数で示されます。

その数値を読み取り可能な日付/時刻に変換するには、この nix Time Conversion online tool のフィールド「UNIX TimeStamp:」に10進値を貼り付けるだけです。

82
Tommy

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


systeminfo|find /i "original" 

あなたに実際の日付を与えるでしょう...秒数ではありません;)
As Sammycommentsfind /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;
159
VonC

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

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

Original Install Date

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

  • C:\Windows

Few C:\Windows files

  • C:\

Few C:\ files

40
Nikolay Kostov

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

35

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

ただこれを見て...

  • スタート> CMDを入力
  • systeminfoを入力します

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

17
ani alexander

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

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

systeminfo |/i "インストール日"を見つけます

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

12
Robin

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

systeminfo | Select-String "Install Date:"
8
user3827180

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

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

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

この効果は、このプログラムの実行中にタイムゾーンを変更すると、日付が間違っていることになります。タイムゾーンの変更に対応するために、実行可能ファイルを再実行する必要があります。

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

InstallDateは、Microsoft TechNetによるUTC形式(yyyymmddHHMMSS.xxxxxx±UUU)です 記事 「WMIを使用した日付と時刻の操作」では、特に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);      
    }
4
Markus

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

> "\Setup\Source OS."

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

 "\Setup\Source OS (Updated on xxxxxx)."

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

更新は実際には別の日に完了することができます。

> "\Setup\Source OS (Updated on xxxxxx)"

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

3
Amit Gupta

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

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

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

3
MoonDogg

WMICを使用してWindowsのインストール日を決定する

wmic os get installdate

2
Lko Jegue

RunCommandで"MSINFO32"と入力してEnterキーを押すと、システムに関連するすべての情報が表示されます

1
shailesh

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

1
Amin

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

1
Tekki

Windowsフォルダの作成日を確認するだけです(右クリックしてプロパティを確認してください):)

0
farhad.kargaran

押す WindowsKey + R cmdと入力します

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

systeminfo | find /i "Original"

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

0