Hardware ID System

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Hardware ID System

    Hallo Community,

    ich versuche mir momentan ein hardware id system zu schreiben, jedoch habe ich nun ein Problem. Mein Konzept: Das Program öffnet sich verbindet sich mit einem Webserver, wo die hardware id per php abgefragt wird, jedoch habe ich ein Problem beim generieren dieser id. Ich bekomme in Zeile 38 eine NullReferenceException. Ich weiß nicht warum nichts zurück gegeben wird, denn alles ist eigentlich richtig definiert. Hier ist der Code.

    Quellcode

    1. Imports System.Management
    2. Public Class LoadingForm
    3. #Disable Warning BC42025
    4. Private Sub LoadingForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. progressLabel.Text = "Initializing loading sequence..."
    6. End Sub
    7. Private Sub LoadingForm_Show(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    8. Sleep(1)
    9. progressLabel.Text = "Establishing connection to server..."
    10. Sleep(1)
    11. If My.Computer.Network.Ping("google.de") = True Then
    12. progressLabel.Text = "Successfully connected to server..."
    13. Sleep(1)
    14. progressLabel.Text = "Gathering local hardware id..."
    15. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    16. ''''''''''''''''''''''''''''''''''''''hwid function''''''''''''''''''''''''''''''''''''''''
    17. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    18. Dim HWIDp1 As String = String.Empty
    19. Dim HWIDp2 As String = String.Empty
    20. Dim HWIDp3 As String = String.Empty
    21. Dim HWIDfinal As String = String.Empty
    22. Dim mcCPU As New ManagementClass("Win32_Processor")
    23. Dim mocCPU As ManagementObjectCollection = mcCPU.GetInstances()
    24. Dim mcBIOS As New ManagementClass("Win32_BIOS")
    25. Dim mocBIOS As ManagementObjectCollection = mcBIOS.GetInstances()
    26. Dim mcRAM As New ManagementClass("win32_PhysicalMemory")
    27. Dim mocRAM As ManagementObjectCollection = mcRAM.GetInstances()
    28. For Each moCPU As ManagementObject In mocCPU
    29. If HWIDp1 = "" Then
    30. HWIDp1 = mcCPU.Properties("ProcessorId").Value.ToString()
    31. Exit For
    32. End If
    33. Next
    34. For Each moBIOS As ManagementObject In mocBIOS
    35. If HWIDp2 = "" Then
    36. HWIDp2 = mcBIOS.Properties("SerialNumber").Value.ToString()
    37. Exit For
    38. End If
    39. Next
    40. For Each moRAM As ManagementObject In mocRAM
    41. If HWIDp3 = "" Then
    42. HWIDp3 = mcRAM.Properties("SerialNumber").Value.ToString()
    43. Exit For
    44. End If
    45. Next
    46. HWIDfinal = HWIDp1 + HWIDp2 + HWIDp3
    47. MsgBox("HWID: " + HWIDfinal, MsgBoxStyle.Information)
    48. Else
    49. progressLabel.Text = "An error occured while trying to connect to the server..."
    50. End If
    51. End Sub
    52. Public Sub Sleep(ByVal seconds As Single)
    53. Static start As Single
    54. start = Microsoft.VisualBasic.Timer()
    55. Do While Microsoft.VisualBasic.Timer() < start + seconds
    56. System.Windows.Forms.Application.DoEvents()
    57. Loop
    58. End Sub
    59. End Class


    Mit freundlichen Grüßen,
    Robskiy.

    Verschoben. ~Thunderbolt

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

    Robskiy schrieb:

    For Each moCPU As ManagementObject In mocCPU
    If HWIDp1 = "" Then
    HWIDp1 = mcCPU.Properties("ProcessorId").Value.ToString()
    Exit For
    End If
    Next


    moCPU <> mcCPU
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Sollte nun eigendlich recht schnell zu finden sein. Achte auf die Schreibweise, nur in dem zitierten Code. mcCPU hat keine Property Namens ProcessorId, ist ja die ManagementKlasse, kein ManagementObject der ManagementObjectCollection durch welche du iterierst. Wie heist den die Variable im Scope der Schleife, welche die ManagementObjecte repräsentiert?
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „NoIde“ ()

    Heyho,

    an sich wäre das kein Problem. Aber man hat dir ja sogar schon gesagt was Sache ist. Da bringt es ja keine Vorlage die du nur kopieren musst
    und dann trotzdem das Problem nicht verstehst oder? (absolut nicht böse gemeint)
    Schau dir deinen Code nochmal an und befolge die Tipps.

    Wie zum Beispiel: Visual Studio - Empfohlene Einstellungen
    Ansonsten poste uns doch mal deine Lösungsansätze / was du so versucht hast denn wie gesagt steht hier ja schon was los ist im Thread.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Ich programmiere nur in C# und hatte nur die Vermutung, dass @Robskiy Strict Off proggen würde, dem war nicht so, aber den Wink mit dem Zaunpfahl hat der Kollege dennoch nicht verstanden.
    Davon mal abgesehen würde ich nie Form_Loading für nennenswerten Code verwenden, das hat seine eigenen Tücken.

    Ansonsten habe ich mal ein winziges Projekt angehängt.
    HWID00.zip
    @Dksksm Im Form_Load steht kein nennenswerter Code, der steht in Form_Shown. Ansonsten korrekt.
    @Robskiy Du hast drei Mal denselben Fehler gemacht, den ersten hat @NoIde bereits benannt:

    VB.NET-Quellcode

    1. HWIDp1 = moCPU.Properties("ProcessorId").Value.ToString()
    2. ' ...
    3. HWIDp2 = moBIOS.Properties("SerialNumber").Value.ToString()
    4. ' ...
    5. HWIDp3 = moRAM.Properties("SerialNumber").Value.ToString()

    Und:
    Die sekundenweise Pause ist suboptimal.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!