RAM Typ auslesen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    RAM Typ auslesen

    Hallo. Kurze Frage:
    Gibt es eine Möglichkeit den Typ des Rams auszulesen ?
    derzeit lese ich aus Win32_PhysicalMemory den MemoryType aus.
    Laut
    MS gibt der Wert folgendes aus:
    Unknown (0)Other (1)DRAM (2)Synchronous DRAM (3)Cache DRAM (4)EDO (5)EDRAM (6)VRAM (7)SRAM (8)RAM (9)ROM (10)Flash (11)EEPROM (12)FEPROM (13)EPROM (14)CDRAM (15)3DRAM (16)SDRAM (17)SGRAM (18)RDRAM (19)DDR (20)DDR2 (21)DDR2 (21)DDR2 FB-DIMM (22)DDR3 (24)FBD2 (25)

    Leider kommt bei mir auf 2 Rechnern (Desktop und Laptop) immer 0 raus was normalerweise 24 sein sollte.

    Mein Code:

    Quellcode

    1. Dim searcher2 As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_PhysicalMemory")
    2. Dim i5 As Integer = 0
    3. Dim ramst As String = ""
    4. Dim typ As String = ""
    5. Dim formFaktor As String = ""
    6. For Each queryObj As System.Management.ManagementObject In searcher2.[Get]()
    7. ramst = queryObj("Capacity")
    8. typ = queryObj("MemoryType")
    9. i5 += 1
    10. FormFaktor = queryObj("FormFactor")
    11. lb_RAM_HerstellerNummer.Items.Add(queryObj("PartNumber"))
    12. lbl_RAM_Speed.Text = queryObj("Speed") & " MHz (min: "
    13. If queryObj("Speed") = "400" Then
    14. lbl_GBSek.Text = "6,4 GB/s"
    15. ElseIf queryObj("Speed") = "533" Then
    16. lbl_GBSek.Text = "8,4 GB/s"
    17. ElseIf queryObj("Speed") = "667" Then
    18. lbl_GBSek.Text = "10,6 GB/s"
    19. ElseIf queryObj("Speed") = "800" Then
    20. lbl_GBSek.Text = "12,8 GB/s"
    21. ElseIf queryObj("Speed") = "1066" Then
    22. lbl_GBSek.Text = "17,0 GB/s"
    23. ElseIf queryObj("Speed") = "1333" Then
    24. lbl_GBSek.Text = "21,2 GB/s"
    25. ElseIf queryObj("Speed") = "1600" Then
    26. lbl_GBSek.Text = "25,6 GB/s"
    27. ElseIf queryObj("Speed") = "1866" Then
    28. lbl_GBSek.Text = "29,8 GB/s"
    29. ElseIf queryObj("Speed") = "2133" Then
    30. lbl_GBSek.Text = "34,0 GB/s"
    31. ElseIf queryObj("Speed") = "2400" Then
    32. lbl_GBSek.Text = "38,4 GB/s"
    33. ElseIf queryObj("Speed") = "2666" Then
    34. lbl_GBSek.Text = "42,6 GB/s"
    35. ElseIf queryObj("Speed") = "3200" Then
    36. lbl_GBSek.Text = "51,2 GB/s"
    37. End If
    38. Next
    39. If typ = 0 Then
    40. typ = "Unbekannt"
    41. ElseIf typ = 1 Then
    42. typ = "Andere"
    43. ElseIf typ = 2 Then
    44. typ = "DRAM"
    45. ElseIf typ = 3 Then
    46. typ = "Synchonous DRAM"
    47. ElseIf typ = 4 Then
    48. typ = "Cache DRAM"
    49. ElseIf typ = 5 Then
    50. typ = "EDO"
    51. ElseIf typ = 6 Then
    52. typ = "EDRAM"
    53. ElseIf typ = 7 Then
    54. typ = "VRAM"
    55. ElseIf typ = 8 Then
    56. typ = "SRAM"
    57. ElseIf typ = 9 Then
    58. typ = "RAM"
    59. ElseIf typ = 10 Then
    60. typ = "ROM"
    61. ElseIf typ = 11 Then
    62. typ = "Flash"
    63. ElseIf typ = 12 Then
    64. typ = "EEPROM"
    65. ElseIf typ = 13 Then
    66. typ = "FEPROM"
    67. ElseIf typ = 14 Then
    68. typ = "EPROM"
    69. ElseIf typ = 15 Then
    70. typ = "CDRAM"
    71. ElseIf typ = 16 Then
    72. typ = "3DRAM"
    73. ElseIf typ = 17 Then
    74. typ = "SDRAM"
    75. ElseIf typ = 18 Then
    76. typ = "SGRAM"
    77. ElseIf typ = 19 Then
    78. typ = "RDRAM"
    79. ElseIf typ = 20 Then
    80. typ = "DDR"
    81. ElseIf typ = 21 Then
    82. typ = "DDR2"
    83. ElseIf typ = 22 Then
    84. typ = "DDR2 FB-DIMM"
    85. ElseIf typ = 24 Then
    86. typ = "DDR3"
    87. ElseIf typ = 25 Then
    88. typ = "FBD2"
    89. End If
    Habs gerade mal bei mir getestet... sowohl unter Windows Server 2012R2 und Windows 10 Prev (VM) wird 0 zurückgegeben.... Wenn ich das Object mit der PowerShell auslese kommt auch 0 zurück....

    Laut diversen Foren ist das ein Fehler der immer Auftritt wenn DDR3 RAM verbaut ist.
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    @TE: der Code ist ziemlich grausig - sowas:

    VB.NET-Quellcode

    1. If queryObj("Speed") = "400" Then
    2. lbl_GBSek.Text = "6,4 GB/s"
    3. ElseIf queryObj("Speed") = "533" Then
    4. lbl_GBSek.Text = "8,4 GB/s"
    5. ElseIf queryObj("Speed") = "667" Then
    6. lbl_GBSek.Text = "10,6 GB/s"
    7. ElseIf queryObj("Speed") = "800" Then
    8. lbl_GBSek.Text = "12,8 GB/s"
    9. ElseIf queryObj("Speed") = "1066" Then
    10. lbl_GBSek.Text = "17,0 GB/s"
    11. ElseIf queryObj("Speed") = "1333" Then
    12. lbl_GBSek.Text = "21,2 GB/s"
    13. ElseIf queryObj("Speed") = "1600" Then
    14. lbl_GBSek.Text = "25,6 GB/s"
    15. ElseIf queryObj("Speed") = "1866" Then
    16. lbl_GBSek.Text = "29,8 GB/s"
    17. ElseIf queryObj("Speed") = "2133" Then
    18. lbl_GBSek.Text = "34,0 GB/s"
    19. ElseIf queryObj("Speed") = "2400" Then
    20. lbl_GBSek.Text = "38,4 GB/s"
    21. ElseIf queryObj("Speed") = "2666" Then
    22. lbl_GBSek.Text = "42,6 GB/s"
    23. ElseIf queryObj("Speed") = "3200" Then
    24. lbl_GBSek.Text = "51,2 GB/s"
    25. End If
    Lös das besser mit einem Select Case, oder noch besser, indem du ein Dictionary initialisierst, wo dann der Label-Wert in Abhängigkeit vom Speed drin ist.

    Und schalte Option Strict On - du wirst sehen, queryObj("Speed") ist gar kein String.

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

    Dim speed5 As String = queryObj("Speed")
    Select Case speed5
    Case 400
    lbl_GBSek.Text = "3,2 GB je Modul oder 6,4 GB Dual-Channel"
    Case 533
    lbl_GBSek.Text = "4,2 GB je Modul oder 8,4 GB Dual-Channel"
    Case 667
    lbl_GBSek.Text = "5,3 GB je Modul oder 10,6 GB Dual-Channel"
    Case 800
    lbl_GBSek.Text = "6,4 GB je Modul oder 12,8 GB Dual-Channel"
    Case 1066
    lbl_GBSek.Text = "8,5 GB je Modul oder 17,0 GB Dual-Channel"
    Case 1333
    lbl_GBSek.Text = "10,6 GB je Modul oder 21,2 GB Dual-Channel"
    Case 1866
    lbl_GBSek.Text = "14,9 GB je Modul oder 39,8 GB Dual-Channel"
    Case 2133
    lbl_GBSek.Text = "17,0 GB je Modul oder 34,0 GB Dual-Channel"
    Case 2666
    lbl_GBSek.Text = "21,3 GB je Modul oder 42,6 GB Dual-Channel"
    Case 3200
    lbl_GBSek.Text = "25,6 GB je Modul oder 51,2 GB Dual-Channel"
    Case Else
    lbl_GBSek.Text = "unbekannt"
    End Select
    und jetzt noch mit Option Strict On, oder besser gleich VisualStuidio richtig einrichten: Visual Studio - Empfohlene Einstellungen

    Denn

    ErfinderDesRades schrieb:

    queryObj("Speed") ist gar kein String.



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