Otra pregunta elegible para un ' desafío de código ': aquí hay algunos ejecutables de código fuente para responder al problema, pero no están completos.
¿Encontrará un script vb que cualquiera pueda ejecutar en su computadora, con el resultado esperado?
systeminfo|find /i "original"
le daría la fecha real ... no la cantidad de segundos;)
Como comenta Sammy , le da más de lo que necesita.
Y esto solo funciona si la configuración regional es en inglés: debe coincidir con el idioma.
Para sueco esto sería " " y " " para alemán.find /i "install"
ursprungligt
ursprüngliches
En el script de Windows PowerShell , puede escribir:
PS > $os = get-wmiobject win32_operatingsystem
PS > $os.ConvertToDateTime($os.InstallDate) -f "MM/dd/yyyy"
Mediante el uso de WMI ( Instrumental de administración de Windows )
Si no utiliza WMI, debe leer y luego convertir el valor del registro:
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"
El resto de esta publicación le brinda otras formas de acceder a esa misma información. Elige tu veneno ;)
En VB.Net eso daría algo como:
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
En Autoit (un lenguaje de script de Windows), eso sería:
;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
En Delphy 7, eso sería como:
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;
Como alternativa, CoastN propone en los comentarios :
Como system.ini-file
permanece intacto en una implementación típica de Windows, en realidad puede obtener la fecha de instalación utilizando el siguiente oneliner:
(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime