WinDATE - Liest Installationsdatum von Windows Aus

  • Hallo Comiunity.
    Ich habe hier mal ein Kleines Skript für Euch, Das das Windows-Installationsdatum Ausliest und in ein Windows-Zeit Format Umwandelt,
    Da der Wert in der Registery ein UNIX-Timestamp Ist!

    Hier mal der Key wo man das Installationsdatum Herbekommt! :

    Schlüssel: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
    Key: InstallDate

    Wenn ihr BugsFindet, Sagt es Mir, Obwohl ich Denke das es Keine Bugs Gibt :D


    So Erstmal Genug Geredet, Hier das Skript:

    Spoiler anzeigen
    [autoit]


    #cs
    Name: WinDATE
    Version: 0.1
    Copyright: WEB-SOFT (DjDominik)
    Website: http://www.websoft.bplaced.net
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Anfang der Includes
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    ;~ Ende der Includes

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Anfang des GUI-Codes
    $Gui = GUICreate("WinDATE", 256, 75, 192, 114, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUICtrlCreateGroup("Installations-Datum von Windows", 8, 8, 241, 57)
    $Box = GUICtrlCreateInput("", 16, 32, 225, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    ;~ Ende des GUI-Codes

    [/autoit] [autoit][/autoit] [autoit]

    $sUnixInstall = RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "InstallDate")
    GUICtrlSetData($Box, _DateTimeFormat(_DateAdd('s', $sUnixInstall, "1970/01/01 01:00:00"), 0))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Und Nochmal als Anhang

    Also Viel Spaß damit!

    Edit: Hier der Programmablauf :
    Edit2: Jetzt sollte der Programmablauf da Sein :)

    Spoiler anzeigen


    [Blockierte Grafik: http://privat.bplaced.net/WinDATE.png

    • Offizieller Beitrag

    Hi,

    in der Hinsicht gibt es schon alte Skripte

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    ; ----------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.1.1 beta
    ; Author: Mega
    ;
    ; Script Function:
    ; Windows XP Information displayed in a Gui
    ;
    ; ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("", 380, 315, -1, -1)
    GUISetFont(8, 500, -1, "MS Sans Serif")

    [/autoit] [autoit][/autoit] [autoit]

    $windowsInformation_L = GUICtrlCreateLabel(" Windows Information", 5, 3, 290, 25)
    $status_L = GUICtrlCreateLabel("Information read ...", 20, 280, 200, 20)
    $description_L = GUICtrlCreateLabel("Description", 20, 58, 100, 20)
    $windowsType_L = GUICtrlCreateLabel("WindowsType", 20, 83, 100, 20)
    $serialNumber_L = GUICtrlCreateLabel("SerialNumber", 20, 108, 100, 20)
    $ProductKey_L = GUICtrlCreateLabel("ProductKey", 20, 133, 100, 20)
    $InstallDate_L = GUICtrlCreateLabel("InstallDate", 20, 158, 100, 20)
    $LastBootUpTime_L = GUICtrlCreateLabel("LastBootUpTime", 20, 183, 100, 20)
    $RegisteredOwner_L = GUICtrlCreateLabel("RegisteredOwner", 20, 208, 100, 20)
    $officeKey_L = GUICtrlCreateLabel("OfficeKey", 20, 233, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $description_I = GUICtrlCreateInput("", 125, 55, 235, 20)
    $windowsType_I = GUICtrlCreateInput("", 125, 80, 235, 20)
    $serialNumber_I = GUICtrlCreateInput("", 125, 105, 235, 20)
    $ProductKey_I = GUICtrlCreateInput("", 125, 130, 235, 20)
    $InstallDate_I = GUICtrlCreateInput("", 125, 155, 235, 20)
    $LastBootUpTime_I = GUICtrlCreateInput("", 125, 180, 235, 20)
    $RegisteredOwner_I = GUICtrlCreateInput("", 125, 205, 235, 20)
    $officeKey_I = GUICtrlCreateInput("", 125, 230, 235, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $informationPanel_G = GUICtrlCreateGroup("Information Panel", 10, 35, 360, 225)
    $status_G = GUICtrlCreateGroup("Status", 10, 265, 360, 40)

    [/autoit] [autoit][/autoit] [autoit]

    $font = "Comic Sans MS"
    GUICtrlSetColor($windowsInformation_L, 0xff0000)
    GUICtrlSetFont($windowsInformation_L, 16, 700, 4, $font)

    [/autoit] [autoit][/autoit] [autoit]

    $progressbar = GUICtrlCreateProgress(140, 278, 220, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Global $product = ""
    Global $counter = 3
    Global $wait = 150

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    If $counter = 3 Then
    Sleep(1000)
    GUICtrlSetData($status_L, "Initialize ... " & $counter)
    progress()
    $counter -= 1
    ElseIf $counter = 2 Then
    GUICtrlSetData($status_L, "Initialize ... " & $counter)
    progress()
    $counter -= 1
    ElseIf $counter = 1 Then
    GUICtrlSetData($status_L, "Initialize ... " & $counter)
    progress()
    $counter -= 1
    ElseIf $counter = 0 Then
    GUICtrlSetData($status_L, "Ready ...")
    progress()
    $counter -= 1
    ElseIf $counter = -1 Then
    Dim $Bin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductID")
    Dim $key4RegisteredOwner = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    $colSettings = $objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")

    [/autoit] [autoit][/autoit] [autoit]

    For $objOperatingSystem In $colSettings
    Next
    GUICtrlSetData($description_I, StringMid($objOperatingSystem.Description, 1))
    If GUICtrlRead($description_I) = '' Then GUICtrlSetData($description_I, GetFullName(@UserName))
    GUICtrlSetData($windowsType_I, @OSVersion & ' ' & StringMid($objOperatingSystem.Caption, 19) & ', ' & @OSServicePack)
    GUICtrlSetData($serialNumber_I, StringMid($objOperatingSystem.SerialNumber, 1))
    GUICtrlSetData($ProductKey_I, DecodeProductKey($Bin))
    GUICtrlSetData($InstallDate_I, WMIDateStringToDate($objOperatingSystem.InstallDate))
    GUICtrlSetData($LastBootUpTime_I, WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
    GUICtrlSetData($RegisteredOwner_I, RegRead($key4RegisteredOwner, "RegisteredOwner"))
    GUICtrlSetData($officeKey_I, getOfficeKey())
    GUICtrlSetData($officeKey_L, "Office " & $product)
    $counter -= 1
    ElseIf $counter < -1 Then
    Select
    Case $msg = $GUI_EVENT_CLOSE
    GUICtrlSetState($progressbar, $GUI_HIDE)
    GUICtrlSetData($status_L, "CU Mega")
    Sleep(2000)
    ExitLoop
    EndSelect
    EndIf
    WEnd
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func GetFullName($sUserName)
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUserName & "'", "WQL", 0x10 + 0x20)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) Then
    For $objItem In $colItems
    Return $objItem.FullName
    Next
    Else
    Return SetError(1, 0, "")
    EndIf
    EndFunc ;==>GetFullName

    [/autoit] [autoit][/autoit] [autoit]

    Func DecodeProductKey($BinaryDPID)
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result

    [/autoit] [autoit][/autoit] [autoit]

    $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    $BinaryDPID = StringMid($BinaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
    $bKey[Int($i / 2) ] = Dec(StringMid($BinaryDPID, $i, 2))
    Next
    For $i = $dlen - 1 To 0 Step - 1
    If Mod(($i + 1), 6) = 0 Then
    $sKey[$i] = "-"
    Else
    $hi = 0
    For $n = $slen - 1 To 0 Step - 1
    $Value = BitOR(BitShift($hi, -8), $bKey[$n])
    $bKey[$n] = Int($Value / 24)
    $hi = Mod($Value, 24)
    Next
    $sKey[$i] = $Digits[$hi + 1]
    EndIf
    Next
    For $i = 0 To 28
    $Result = $Result & $sKey[$i]
    Next
    Return $Result
    EndFunc ;==>DecodeProductKey

    [/autoit] [autoit][/autoit] [autoit]

    Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 7, 2) & "/" & _
    StringMid($dtmDate, 5, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
    EndFunc ;==>WMIDateStringToDate

    [/autoit] [autoit][/autoit] [autoit]

    Func progress()
    If $counter = 3 Then
    For $i = 0 To 20 Step 1
    GUICtrlSetData($progressbar, $i)
    Sleep($wait / 20)
    Next
    ElseIf $counter = 2 Then
    For $i = 20 To 50 Step 1
    GUICtrlSetData($progressbar, $i)
    Sleep($wait / 30)
    Next
    ElseIf $counter = 1 Then
    For $i = 50 To 80 Step 1
    GUICtrlSetData($progressbar, $i)
    Sleep($wait / 30)
    Next
    ElseIf $counter = 0 Then
    For $i = 80 To 100 Step 1
    GUICtrlSetData($progressbar, $i)
    Sleep($wait / 20)
    Next
    GUICtrlSetState($progressbar, $GUI_SHOW)
    EndIf
    EndFunc ;==>progress

    [/autoit] [autoit][/autoit] [autoit]

    Func getOfficeKey()
    Local $List[1]
    Local $i = 1
    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", "Path")
    If $var <> "" Then
    $product = "2003"
    Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Registration"
    Else
    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot", "Path")
    If @error <> 0 Then
    GUICtrlSetData($status_L, "Info: Unable to find installationPath, maybe no Office installed!")
    Return "No Office XP or 2003 found"
    EndIf
    If $var <> "" Then
    $product = "XP"
    Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Registration"
    EndIf
    EndIf
    Dim $var = RegEnumKey($officeKey, $i)
    If @error <> 0 Then
    GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
    Return "No Office XP or 2003 found"
    Else
    $List[$i - 1] = RegRead($officeKey & "\" & $var, "DigitalProductID")
    If $List[$i - 1] = "" Then
    GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
    Else
    $key = $List[$i - 1]
    Return DecodeProductKey($key)
    EndIf
    EndIf
    EndFunc ;==>getOfficeKey

    [/autoit]

    Mega

  • Cooles script
    @DjDominik
    du hat eine edit wo steht programm ablauf und der spoiler ist leer könnstes du den hineinpacken ? :cursing: