Herausfinden welche Festplatte welche hd bezeichnung hat (( hd1 oder hd3 ))

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    Herausfinden welche Festplatte welche hd bezeichnung hat (( hd1 oder hd3 ))

    Wie kann ich mir anzeigen lasse welche festplatte meine hd1 oder so ist ?
    Driveinfo hat mich nicht witer gebracht nach was muss ich suchen ?

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Info As IO.DriveInfo
    3. For Each item In IO.DriveInfo.GetDrives
    4. If item.DriveType = IO.DriveType.Removable Then
    5. If item.IsReady = True Then
    6. ListBox1.Items.Add(item.Name & "-" & item.VolumeLabel & "-" & item.DriveFormat & "-" & item.TotalFreeSpace)
    7. End If
    8. End If
    9. Next
    10. End Sub


    LG Andre....
    Es geht hierbei um das erstellen eines MBR - Master Boot Record !

    Ich habe anfangs sehr viel cmd gemacht und (( Diskpart )) so wie (( grubinst.exe )) in cmd komplett durch !

    Nun hd1 ist ein teil des Aufrufs von (( grubinst.exe )) um einen MBR zu erstellen zb (( grubinst.exe "(hd1)" ))
    oder (( grubinst.exe "(hd1.0)" )) usw

    Natürlich könnte ich das cmd Fenster einbinden , aber das wollte ich eigentlich nicht da es komplett in vb sein sollte !
    DiskInfo scheint dafür nicht geeignet zu sein , da mir dort mein Anliegen nicht aufgezeigt wird ! Oder doch ???

    Die Frage ist nun wie folgt (( Wie kann ich meine Datenträger als hdd1 , hdd2 -beziehungsweise was sie sind auflisten ))

    Hier ein Cmd Code der als Admin gestartet werden muss und zeigt was ich brauche !
    Und zwar davon zb Datenträger 0 usw....

    VB.NET-Quellcode

    1. @echo off
    2. echo > loki1979.cfg LIST DISK
    3. @echo off
    4. diskpart /s loki1979.cfg
    5. pause


    Bild:
    Hi,

    wenn die die Daten daraus brauchst, starte diskpart mit process.start mit RedirectStandardOutput = True, dann kannst du das benötigte aus dem String rausfiltern.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private helpfilepath As String = IO.Path.Combine(Application.StartupPath, "helpfile")
    3. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    4. If IO.File.Exists(helpfilepath) Then
    5. IO.File.Delete(helpfilepath)
    6. End If
    7. End Sub
    8. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    9. If Not IO.File.Exists(helpfilepath) Then
    10. IO.File.WriteAllText(helpfilepath, "List Volume")
    11. End If
    12. Dim p As New Process
    13. p.StartInfo.CreateNoWindow = True
    14. p.StartInfo.UseShellExecute = False
    15. p.StartInfo.RedirectStandardOutput = True
    16. p.StartInfo.FileName = "diskpart"
    17. p.StartInfo.Arguments = "/s """ & helpfilepath & """"
    18. p.Start()
    19. RichTextBox1.Text = p.StandardOutput.ReadToEnd
    20. End Sub
    21. End Class


    mfG

    Derfuhr

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Derfuhr“ ()

    TVX schrieb:

    Index im Array - muss ich mal schauen
    Eigentlich sollte klar sein, was ein Arrayindex ist.
    DriveInfo.GetDrives gibt dir ein Array zurück. Das erste Element darin hat Index 0 das zweite Index 1 usw. Die Reihenfolge sollte auch die selbe sein, wie im Explorer oder irgendwo sonst, da Windows das regelt.
    Bei mir ist im driveInfo.GetDrives Array immer Laufwerk C als erstes(A+B gibt es bei mir net), in Diskpart ist Volume0 das DVD laufwerk(E:,), was bei mir das "First Boot" Device ist.
    Daher vermute ich, das es was mit der Bootversuchs Reihenfolge zu tun hat.
    Kleiner Tipp. Wenn irgendein Windows Programm Dinge kann die mit WinAPI zusammenhängen und du wissen willst wie es das macht, kannst du einfach den API-Monitor starten. Das Programm da reinhängen und schauen welche APIs aufgerufen werden. Dort siehst du auch die entsprechenden Parameter und das geht wirklich kinderleicht. Einen Link dazu findest du hier: [Allgemein] Entwickler-Ressourcen und Tools, Bücher und WebCasts


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Artentus schrieb:

    TVX schrieb:

    Index im Array - muss ich mal schauen
    Eigentlich sollte klar sein, was ein Arrayindex ist.
    DriveInfo.GetDrives gibt dir ein Array zurück. Das erste Element darin hat Index 0 das zweite Index 1 usw. Die Reihenfolge sollte auch die selbe sein, wie im Explorer oder irgendwo sonst, da Windows das regelt.


    Ja das ist schon klar aber wie gesagt das konnt nicht sein weil 0 dan c währe und 1 dann d usw ......
    Nein, mit Datenträger ist eine Festplatte gemeint und nicht eine Partition.
    Wenn du die ermitteln willst, kommst du um die WMI nicht herum.
    Ich sage nur: "Win32_DiskDrive"
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Luki-Progger“ ()

    Luki-Progger schrieb:

    Datenträger ist eine Festplatte gemeint und nicht eine Partition.


    Moin,

    das ist ein Irrtum, ich hab 1 Festplatte mit 2 Partitionen, Laufwerk C und D, beide werden mir als Datenträger bzw. Volume angezeigt. Wie es auf dem Arbeitsplatz/Computer im Windows-Explorer auch wird, nur die Reihenfolge ist unterschiedlich.

    mfG

    Derfuhr

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Derfuhr“ ()

    Geht Super !


    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Management
    3. Public Class Form1
    4. Dim Startlaufwerk As String = Application.StartupPath.Substring(0, 2).ToLower()
    5. Dim Autostart As Integer = 15
    6. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7. Me.TopMost = True
    8. ' grubinst aus resources
    9. System.IO.File.WriteAllBytes("grubinst.exe", My.Resources.grubinst)
    10. Dim Liste As New List(Of String)
    11. ' alle Laufwerke ermitteln
    12. Dim Sucher1 As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_DiskDrive")
    13. ' alle Laufwerke durchlaufen
    14. For Each Betzeichnung As ManagementObject In Sucher1.Get()
    15. ' alle Partitionen des Laufwerkes ermitteln
    16. Dim sucher2 As New ManagementObjectSearcher("root\CIMV2", "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" & Betzeichnung("DeviceID").ToString & "'} WHERE AssocClass =" & "Win32_DiskDriveToDiskPartition")
    17. ' alle Partitionen durchlaufen
    18. For Each ID_Partition As ManagementObject In sucher2.Get()
    19. ' Laufwerksbuchstaben zur aktuellen Partition ermitteln
    20. Dim sucher3 As New ManagementObjectSearcher("root\CIMV2", "ASSOCIATORS OF " & "{Win32_DiskPartition.DeviceID=""" & ID_Partition("DeviceID").ToString.Trim() & """} WHERE AssocClass = Win32_LogicalDiskToPartition")
    21. ' alle Angaben ausgeben
    22. For Each Laufwerk As ManagementObject In sucher3.Get()
    23. Dim Replacer As String = CStr(ID_Partition("DeviceID"))
    24. Liste.Add(CStr(Laufwerk("DeviceID")) & " " & Replacer.Replace("#", ""))
    25. Next
    26. Next
    27. Next
    28. 'string liste
    29. For Each line In Liste
    30. If line.ToLower().Contains(Startlaufwerk) Then
    31. HDD = line.Split(CChar(" "))(2).Split(CChar(","))(0)
    32. Label1.Text = "Zieldatenträger für MBR erstellung ist ( " & Startlaufwerk & " - hdd " & HDD & " )"
    33. Me.BackColor = Color.Gold
    34. End If
    35. Next
    36. End Sub
    37. 'mbr autostart
    38. Private Sub Form1_ResizeEnd(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ResizeEnd
    39. Timer1.Interval = 1000
    40. Timer1.Enabled = True
    41. End Sub
    42. ' MBR_Schreiben
    43. Dim HDD As String
    44. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    45. Timer1.Enabled = False
    46. Autostart = 15
    47. Me.Button2.Text = "Autostart Start "
    48. If System.IO.File.Exists("grubinst.exe") Then
    49. Try
    50. Process.Start("grubinst.exe", """(hd" & HDD & ")""")
    51. Label1.Text = "Der MBR wurde erfolgreich auf Laufwerk ( " & Startlaufwerk & " ) erstellt !"
    52. Me.BackColor = Color.Lime
    53. Catch ex As Exception
    54. Label1.Text = "Master Boot Record konnte nicht erstellt werden !"
    55. Me.BackColor = Color.Orange
    56. End Try
    57. Else
    58. Label1.Text = "Die benötigte Datei (( grubinst.exe )) wurde nicht gefunden !"
    59. Me.BackColor = Color.Orange
    60. End If
    61. End Sub
    62. 'grubinst.exe löschen
    63. Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    64. If System.IO.File.Exists("grubinst.exe") Then
    65. My.Computer.FileSystem.DeleteFile("grubinst.exe")
    66. End If
    67. End Sub
    68. 'autostart timer
    69. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    70. Autostart = Autostart - 1
    71. Me.Button2.Text = "Autostart Stop " & Autostart
    72. If Autostart = 0 Then
    73. Button1.PerformClick()
    74. Timer1.Enabled = False
    75. Autostart = 0
    76. Me.Button2.Text = "Autostart Start "
    77. End If
    78. End Sub
    79. 'autostart
    80. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    81. If Timer1.Enabled = True Then
    82. Timer1.Enabled = False
    83. Autostart = 15
    84. Me.Button2.Text = "Autostart Start "
    85. Else
    86. Timer1.Enabled = True
    87. Autostart = 15
    88. End If
    89. Label1.Text = "Zieldatenträger für MBR erstellung ist ( " & Startlaufwerk & " - hdd " & HDD & " )"
    90. Me.BackColor = Color.Gold
    91. End Sub
    92. End Class
    93. 'wichtige liste
    94. 'https://code.google.com/p/grub4dos-chenall/downloads/list


    LG Andre ;)

    PS Am halben Text fehlen die Erklärungen - er schreibts nicht grün hin :evil:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TVX“ ()