Windows의 설치 시간과 날짜는 어떻게 찾습니까?


134

이것은 약간 미친 질문처럼 들릴 수 있지만 Windows의 설치 시간과 날짜를 (API / 레지스트리 키를 통해) 어떻게 알 수 있습니까?

지금까지 내가 얻을 수있는 최선의 방법은 C : \ Windows의 다양한 파일을보고 추측하려고하는 것입니다 ... 그러나 이것이 좋은 해결책은 아닙니다.

답변:


90

에서 regedit.exe로 이동

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

1970 년 1 월 1 일 이후의 시간 (초)으로 제공됩니다. (참고 : Windows 10의 경우이 날짜는 원래 설치 날짜가 아니라 마지막 기능 업데이트가 설치된 날짜입니다.)

이 숫자를 읽을 수있는 날짜 / 시간으로 변환하려면이 Unix Time Conversion 온라인 도구 의 "UNIX TimeStamp :"필드에 10 진수 값을 붙여 넣으십시오 .


3
대단합니다. 정보를 얻기 위해 특별한 장소가 있습니까? 아니면 그냥 알고 계셨습니까?
무료 Wildebeest

5
디스크 이미지를 사용하여 Windows를 설치 한 경우를 제외하고는 효과적입니다. 이 문제를 해결하기 위해 사용자 프로필 생성을 확인하는 방법이 있습니까?
Bernard Vander

8
최신 서비스 팩 / 업데이트 설치 날짜 (예 : 원래 버전 설치 시간이 아닌 CURRENT 버전)를 반영하지 않은 작업
user3800527

2
시스템 설치 날짜 대신 마지막 Windows 업데이트 날짜를 제공한다고 생각합니다.
Tharindu Sathischandra

내 Windows 7 설치에서 해당 등록 위치 인 SP1에 InstallDate가 표시되지 않습니다.
user734028

175

' 코드 도전 '에 대한 또 다른 질문 은 다음과 같습니다. 여기에 문제를 해결하기위한 일부 소스 코드 실행 파일이 있지만 완전하지는 않습니다.
누구나 컴퓨터에서 실행할 수있는 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 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 은 다음 과 같이 의견을 제안 합니다 .

는 AS system.ini-file일반적인 Windows 배포의 손길이 닿지 않은 숙박, 당신은 실제로 다음 oneliner을 사용하여 설치 날짜를 얻을 수 있습니다 :

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

2
왜 그런지 알았습니다. 내 Windows가 영어가 아니기 때문입니다. :)
Pedro77

3
systeminfo|find /i "original""원래 설치 날짜"만 필터링하는 데 사용하십시오 . "install"을 문자열로 사용하면 필요한 것보다 많은 정보를 얻을 수 있습니다. 또한 로케일이 영어가 아닌 경우 작동하지 않을 수 있습니다. 언어와 일치해야합니다. 스웨덴어의 경우 독일어의 경우 "ursprungligt"및 "ursprüngliches"입니다.
Samir

1
나에게 systeminfo | find / i "original"은 2017 년 6 월 30 일을 반환했는데 약 4 년 동안 기계를 사용 했으므로 일부 Windows 업데이트가 필요했습니다.
Tim

1
방금이 작업을 수행했지만 기본적으로 245 개의 핫픽스가 있으면 CMD 창에 전체 'systeinfo'출력을 표시하기에 충분한 세로 줄이 없었습니다. 잠시 내 머리를 긁고 있었다. 이 문제를 해결하기 위해
따랐

1
2 주 전에 시스템을 설치했지만 실제로 1 년 또는 2 년이 걸렸습니다. 이것이 마지막 대규모 업그레이드 날짜 인 것 같습니다.
한스

48

여기에 충분한 답변이 있지만 5 센트를 넣고 싶습니다.

이전 설치 위에 Windows 10이 설치되어 10/30/2015있고 Creators Update가 설치되어 04/14/2017있습니다. 내 답변에 설명 된 모든 방법은 크리에이터 업데이트 설치 날짜를 알려줍니다.

최초 설치 날짜

Windows 10의 실제 설치 날짜와 일치하는 파일 생성 날짜가 거의 없습니다.

  • C:\Windows

몇 C : \ Windows 파일

  • C:\

몇 C : \ 파일


7
다른 답변보다 낫지 만 이미지 배포는 어떻습니까?
user3800527

7
이것은 정답에 확실히 더 가깝습니다. 다른 솔루션은 더 이상 Windows 10 업그레이드에서 작동하지 않습니다. 그러나 여기에 나열된 5 개의 파일 / 폴더 중 어느 것도 내 시스템에서 정확한 날짜를 가지고 있지 않았습니다 (일부는 나중에 그리고 실제로는 이전 위치). 그러나 내 시스템에서 C : \ Windows \ hbcikrnl.ini, C : \ Windows \ symbols \ 및 C : \ Windows \ CSC \와 같은 날짜로 파일 1 개와 폴더 2 개를 찾았습니다. 따라서 대략적인시기를 알면 C : \ Windows \로 이동하여 시스템 시스템 파일을 표시하고 날짜별로 정렬 한 다음 올바르게 보이는 것을 찾으십시오.
Matt Jacobi

내 Windows 10 system.ini의 경우 BOOTNXT와 bootmgr의 날짜가 정확했습니다. Win.ini & $ Recycle.Bin은 더 새로운 날짜를 가졌습니다.
Keith

system.ini내 Windows 7 및 2008 컴퓨터에서 이해가되지 않는 날짜 , 설치 소스에서 생성 된 타임 스탬프가 설치시 복사되는 것으로 보입니다. C:\pagefile.sys정확한 타임 스탬프가있었습니다.
Daniel Sokolowski

38

명령 프롬프트를 열고 " systeminfo "를 입력 한 후 Enter를 누르십시오. 정보를 얻는 데 몇 분이 걸릴 수 있습니다. 결과 페이지에 "시스템 설치 날짜"라는 항목이 있습니다. 이것이 Windows 설치 날짜입니다. 이 프로세스는 XP, Win7 및 win8에서도 작동합니다.


1
이 작업을 수행하려면 관리자 여야합니다.
Barrie Reader

2
Windows 7에서는 "원본 설치 날짜"항목이 있는데, 어떤 이유로 든
2002

18

Windows 7 설치 날짜 / 시간을 찾는 방법 :

이것 만 봐

  • 시작> CMD 입력
  • systeminfo를 입력하십시오

그게 다야; 기계에 대한 모든 정보를 볼 수 있습니다. 매우 간단한 방법


13

PC의 운영 체제 설치 날짜를 알고 싶습니까? 다음은 PC 운영 체제가 설치되거나 마지막으로 업그레이드 된 날짜와 시간을 빠르고 쉽게 찾을 수있는 방법입니다.

명령 프롬프트를 열고 (start-> run-> type cmd-> hit enter) 다음 명령을 실행하십시오.

systeminfo | / i "설치 날짜"찾기

몇 초 안에 설치 날짜가 표시됩니다


3
주요 서비스 팩을 설치하기 전까지는 그 날짜를 반영합니다.
user3800527

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) 이후 경과 한 초 수로 정의되며 윤초를 계산하지 않습니다.

즉, 시애틀, WA에 컴퓨터를 설치하고 뉴욕으로 옮긴 경우 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시 오후 3시에 설치하고 뉴욕으로 이동 한 다음 UTC에서 현지 시간으로 변환하면 2018 년 4 월 1 일 오후 6시 (6시)라고 말하고 정확합니다. 시애틀에 설치했을 때 뉴욕시 : 00 PM
jla

jla 감사합니다, 나는 내 게시물에 명확하지 않았습니다. 프로그램이 실행되는 동안 시간대를 변경하면 시간대 변경 내용이 반영되지 않습니다. 시간대를 적용하려면 프로그램을 다시 시작해야합니다. 이것은 Powershell과 동일한 동작입니다.
Markus

InstallDate는 현재 시간대가 적용된 현지 시간과 + XXX 형식의 시간대를 반환합니다. 시간대가 변경되면 설치 날짜와 시간대도 변경됩니다. UTC의 설치 날짜가 2000-01-01T12 : 00 : 00Z 인 경우 InstallDate는 20000101120000.000000 + 000입니다. 시간대를 UTC + 5로 설정하면 20000101170000.000000 + 300이됩니다. 위 코드를 사용하면 시간대가 두 번 추가됩니다. UTC 날짜를 얻으려면 "InstallDate ="줄을 다음과 같이 변경해야합니다. InstallDate = new DateTime (년, 월, 날짜, 시간, 분, 초, msecs, DateTimeKind.Utc)-UTCoffset;
Jesús Diéguez Fernández

3

c : \ pagefile.sys의 생성 날짜는 대부분의 경우에 매우 신뢰할 수 있습니다. 이 명령을 사용하여 쉽게 얻을 수 있습니다 (Windows가 C :에 설치되어 있다고 가정).

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

'/ as'는 '시스템 파일'을 지정합니다. 그렇지 않으면 찾을 수 없습니다. '/ t : c'는 'creation'을 표시하도록 시간 필드를 설정합니다.


1
그것은 페이지 파일의 생성 날짜를 줄 것이며, 이는 OS 자체의 설치 날짜와 전혀 관련이 없습니다. 여러 가지 이유로 다시 만들 수 있으며 원하는 경우 변조 할 수도 있습니다. 그것은 믿을만한 방법이 아닙니다.
Alejandro

1
초기 설치 중에 생성되므로 '완전히 관련이 없습니다'. 따라서 어떤 시점에서 의도적으로 다시 작성하거나 삭제하지 않는 한 '대부분의 경우'작성 날짜는 업그레이드를 통해 지속되므로 초기 설치 날짜와 동일합니다. 예, 100 % 신뢰할 수는 없지만 빠르고 쉽습니다. 더 많은 경우에 정확하다고 생각합니다. 여기에 많은 대답보다 확실히 더 그렇습니다.
MoonDogg

언제든지 해당 파일을 다시 만들 수 있으며 메서드가 100 % 올바른 결과를 보장하지 않으면 아무도 그 파일에 의존 할 수 없습니다.
Slava Murygin

2

WMIC를 사용하여 Windows 설치 날짜 결정

wmic os는 설치 날짜를 얻습니다


1
이것은 아마도 InstallDate 레지스트리 키를 읽고 동일한 문제가 있습니다. 빌드 업데이트시 변경됩니다.
Anders

1

정교함을 사용하십시오. 운영 체제 섹션에 설치 날짜가 표시됩니다. http://www.piriform.com/speccy


1
프로그래밍 솔루션이 아닙니다. Powershell (예 :)과 상호 작용할 수있는 인터페이스가 있으면 나열하십시오.
Tyler Montney

1

"windows"및 "program files"와 같은 시스템 드라이브의 폴더를 확인할 수도 있습니다. 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 일반 탭에서 폴더를 만든 날짜를 확인하십시오.


5
유효하지만 이것은 프로그래밍 솔루션이 아닙니다
Matt Wilko

@Matt 그는 Natural Lenguaje의 알고리즘을 제공하므로 인간의 장치에 그냥 복사하십시오! : D
Jonathan

3
이미지 기반 설치 ( .WIM파일) 를 사용하는 최신 버전의 Windows 에서 생성 날짜는 OS가 특정 시스템에 설치 될 때가 아니라 Microsoft가 이미지를 생성 한 날짜입니다.
ctype.h

1

RunCommand에서 write "MSINFO32"and hit enter 시스템과 관련된 모든 정보를 표시합니다.


설치 시간을 제외한 모든 정보 Windows 7 SP1
Pavel Vlasov


0

를 눌러 WindowsKey+ R를 입력cmd

명령 창에서 다음을 입력하십시오.

systeminfo | find /i "Original"

(이전 버전의 창의 경우 모든 대문자로 "ORIGINAL"을 입력하십시오).


왜 다운 투표권을 알고 있습니까? 나를 위해 일했는데 어떤 이유로 든 정확하지 않습니까? 다운 투표를 할 때 설명
아마 russelrillema

@russelrillema 마지막 주요 서비스 팩이이 날짜보다 우선합니다.
돈 토마토

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.