suche Konst. Wert jedoch verschieden

  • Hey.
    Die Festplatten ID oder wie man das genau nennt ist immer gleich, natürlich nur solange, wie die selbe festplatte im PC ist^^

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • [autoit]

    MsgBox(0,"","Hallo:" & @UserName & @CRLF & "Das ist eine Macro Demo" & @CRLF & "Pfad zu den Eigenen Dokumenten: " & @MyDocumentsDir)

    [/autoit]

    Das ist warscheinlich was su suchst.

    nein das ist es nicht was ich suche

    Du suchst eine sogenante HardwareID, im Englischen findest dazu ein paar Themen.

    ja das schon eher das was ich suche, habe das Englische forum schon etwas durchstöbert,& scriptomatic und co durchgewälzt, aber nix was wirklich befriedigend und zuverlässig ist.

    Noch jemand vieleicht eine idee ?

    Gruß
    Pre

    • Offizieller Beitrag

    Windows ab Vista unterstützt das auslesen der Hardware-Seriennummer aller eingebauten Festplatten. Die werden vom jeweiligen Hersteller vergeben und sind einmalig (sollten sie jedenfalls).
    Auslesen kann man sie so:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $aDisks = _CI_GetHarddrives()
    _ArrayDisplay($aDisks)

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

    Func _CI_GetHarddrives($strComputer = '.')
    Local $aReturn[1][8] = [[ _
    'Bezeichnung:', 'Größe:', 'Anschluss:', 'Bytes/Sektor:', 'Anzahl der Sektoren:', _
    'PNPDeviceID:', 'Status:', 'Seriennr. (Hardware):']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][8]
    $aReturn[$x][0] = $objItem.Model
    $aReturn[$x][1] = $objItem.Size
    $aReturn[$x][2] = $objItem.InterfaceType
    $aReturn[$x][3] = $objItem.BytesPerSector
    $aReturn[$x][4] = $objItem.TotalSectors
    $aReturn[$x][5] = $objItem.PNPDeviceID
    $aReturn[$x][6] = $objItem.Status
    Switch @OSVersion
    Case 'WIN_VISTA', 'WIN_7'
    If Number($objItem.SerialNumber) > 0 Then
    $aReturn[$x][7] = $objItem.SerialNumber & ' ("' & _CI_SerialToString($objItem.SerialNumber) & '")'
    Else
    $aReturn[$x][7] = 'nicht vorhanden'
    EndIf
    Case Else
    $aReturn[$x][7] = 'Wird von ' & @OSVersion & ' nicht unterstützt!'
    EndSwitch
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetHarddrives

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

    Func _CI_SerialToString($sSerial)
    Local $sOut = ''
    For $i = 1 To StringLen($sSerial) Step 2
    $sOut &= Chr(Dec(StringMid($sSerial, $i, 2)))
    Next
    Return $sOut
    EndFunc ;==>_CI_SerialToString

    [/autoit]
  • Du kannst ja auch den Windows-Key aus der Registry auslesen dann einen SHA1-Hash davon verwenden. Im Forum müsstest du eine UDF zum auslesen finden.

  • ich suche für mein Project eine Konstante die immer die selbe bleibt jedoch von Pc zu PC verschieden. Wie z.b. die Mac adresse einer Netzwerkkarte. Gibt es noch mehr solcher Konstanten ?
    wenn ja bin ich für alle forschläge offen.

    Ich habe dieses gefunden im Englischen Forum:
    "Look at _WinAPI_UniqueHardwareID() function from WinAPIEx.au3 library. Maybe this is exactly what you want." (link )

    Programmieren ist ein bisschen Wissenschaft und viel Spass! :)