partitonen einer festplate herausfinden

  • Hallo,

    ich kann ja in Windows in diesen Win32 Classes Infos über verschiedenste sachen des systems herausfinden.


    Hier mal ein Beispiel um Sachen über die Festplatte herauszufinden.

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

    $objWMIService = ObjGet('winmgmts:\\' & $system_name & '\root\cimv2')

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

    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems

    MsgBox("", "", $objItem.DeviceID)

    For $obj In $objItem.Capabilities

    ;MsgBox("", "", $obj)

    Next

    Next
    EndIf

    [/autoit]

    Wie ist es aber möglich die Anzahl und Namen der Partitionen einer Festplatte herauszufinden?

    So dass ich die Partitionen einer Festplatte zuordnen und mit der "Win32_LogicalDisk" Class weitre informationen heraussuchen kann.

  • ja, schade dass das nicht mit autoit funktioniert.

    aber adminrechte kann ich beim auslesen nicht nutzen, daher kann ich das vorgeschlagene programm nicht nutzen.

  • @anno


    Was hälst Du hier von? Mittels WMI werden zu den physikalischen Festplatten die Partitionen abgefragt.

    Spoiler anzeigen
    [autoit]

    $system_name = '.'
    $objWMIService = ObjGet('winmgmts:\\' & $system_name & '\root\cimv2')
    $colDiskDrives = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive')
    If IsObj($colDiskDrives) Then
    For $objDrive In $colDiskDrives
    ConsoleWrite('Physical Disk: ' & $objDrive.Caption & ' -- ' & $objDrive.DeviceID & @CRLF)
    $strDriveID = StringReplace($objDrive.DeviceID, '\', '\\')
    $colPartitions = $objWMIService.ExecQuery _
    ('ASSOCIATORS OF {Win32_DiskDrive.DeviceID="' & _
    $strDriveID & '"} WHERE AssocClass = ' & _
    'Win32_DiskDriveToDiskPartition')
    For $objPartition In $colPartitions
    ConsoleWrite(@TAB & 'Disk Partition: ' & $objPartition.DeviceID & @CRLF)
    $colLogicalDisks = $objWMIService.ExecQuery _
    ('ASSOCIATORS OF {Win32_DiskPartition.DeviceID="' & _
    $objPartition.DeviceID & '"} WHERE AssocClass = ' & _
    'Win32_LogicalDiskToPartition')
    For $objLogicalDisk In $colLogicalDisks
    ConsoleWrite(@TAB & 'Logical Disk: ' & $objLogicalDisk.DeviceID & @CRLF)
    Next
    Next
    ConsoleWrite('-----------------------------------------------------------------' & @crlf)
    Next
    EndIf

    [/autoit]
  • Ergebnis sieht gut aus, jedenfalls entspricht es der Wirklichkeit.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"