Hardware ID auslesen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Radi0.

    also so kriegst du die HD serial

    VB.NET-Quellcode

    1. Imports System.Management
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Try
    5. Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
    6. For Each wmi_HD As ManagementObject In searcher.Get()
    7. ListBox1.Items.Add((wmi_HD("SerialNumber")).ToString())
    8. Next
    9. Catch ex As Exception
    10. End Try
    11. End Sub
    12. End Class


    damit der code funktioniert brauchst ein Button1 eine Listbox1 und du must "DefaultManagementInstaller" von Extras - Toolboxelementen ausweahlen.. impotieren und in die Form einfuegen

    gr-miko
    Schäm dich nicht "Zu fragen", schäm dich "Nicht zu wissen". ?(
    Ok danke dir es klappt,

    noch ne frage ich habe es so gemacht dass er login+pw+hw_id aus ner ini lädt nur diese ini muss ja dann immer mit in den ordner rein
    >.<...

    kann man dass auch ihrgendwie so machen dass das ganze auf ein FTP-Server läuft? zb domain.de/account/login/login.ini

    VB.NET-Quellcode

    1. Ret = GetPrivateProfileString("Account", "User", "âêûîô#2224", Passwort, MaxLen, "C:\settings.ini")


    nur wie kann er dass von einem FTP laden und nicht von C:/settings.ini

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

    was meinst du genau?

    Willst du die HD serial auf ein Verzeichnis via FTP hochladen?

    Wenn ja dann schreibst du sie auf eine Textdatei und diese ladest du dann hoch im ersten Start
    dann bei jedem Start wird die Datei runter geladen und mit der HD serial vergleicht also das Program liest die
    Zeile mit der HD seiral aus der Textdatei und dann vergleicht mit der echten HD serial
    so kann man andere PC abblocken also nur der PC der das Program als erster geladen hat kann die auch benutzten.

    Meintest du so was in der Art?
    Schäm dich nicht "Zu fragen", schäm dich "Nicht zu wissen". ?(
    also wenn du etwas im Hauptforum nach guckst hab ich genau geschrieben das ich das gleiche vorhabe :D

    ok dann fangen wir mal an:

    als erstes die Datei mus heruntergeladen werden denn sonst kannst du sie nicht vergleichen, direct aus dem FTP ist glaub ich nicht moeglich.

    also must du es so machen:

    1. eine externe Textdatei die settings.txt heisst und dort in der 1 Zeile eine 1 schreiben. Und die plazierst du im Program verzeichnis (Das ist die Datei die dem Program sagt dass es sein erster Start ist, du kannst die Datei vertecken und anders bennen wie du willst)

    Wenn erste Zeile von settings.txt = 1 dann startet Program als erstes mal und start1.checked = True sonst start1.checked = false und Program weiss so dass es nicht sein erster Start ist.

    2. wird die HD ID abgefragt und die in eine Datei namens hd.txt hingeschrieben im Verzeichnis vom Program (kannst auch eandern wie du willst) ps.: diese Datei wird nach dem ersten Prozess geloscht die benotigst du nur zum ersten Start

    3. wenn erster start dann gibt es die null.dll datei nicht. in der null dll datei wird eine 1 oder 0 (ist auch dir ueberlassen kannst ja eandern) geschrieben und das program fragt nach dieser datei wenn eine 0 steht schliest das program wenn eine 1 steht leuaft es !!

    also wird es im ersten start nur die datei hd.txt aufs gewuehnste FTP verzeichnis hochgeladen und die Null datei mit einer 1 erstellt.

    4. beim neachsten start wird nach der null.dll gefragt und die existiert, wenn null.dll.exist dann wird die hd.txt runter geladen und mit dem hd.text verglichen wenn ubereinstimmt wird auf die null.dll eine 1 geschrieben program leuaft wenn nicht uebereinstimmt wird auf die null.dll eine 0 geschrieben program sperrt sich

    5. wenn der jenige offline ist passiert folgendes:

    beim ersten start kriegt er eine Fehlehrmeldung: You need to connect to the Net to run this Program on the first Start

    wenn es nicht der erste start ist und der jenige ist offline wird nicht heruntergeladen da er offline ist sondern wird der parameter auf der null.dll gecheckt wenn 1 leuaft program wenn 0 leuaft nicht !! und so kann auch keine HD ID ueberpruefung laufen aber ,..

    beim neachsten start wenn der wieder Online ist leuatf die uberprufung und wenn hd.txt = hd.text dann null.dll = 1 program leuft wenn nicht null.dll = 0 program sperrt sich !!

    hoffe du hast verstanden un nun zum CODE:

    "SIEHE THREAD UNTEN"

    viel spass :thumbsup:

    miko

    EDIT: Habs gerade getestet es funktioniert prima, nicht vergessen settings.txt erstellen mit einer Zeile und einer Ziffer und zwar die "1"

    EDIT: ich bin auf was gestossen, also ich habs mir wieder uberlegt wenn jemand das program auf ein anderes pc starten wuerde dann weil null.dll sich nicht befindet er eine hd.txt von seinem pc erstellen wird und so leauft es auch auf seinem da haben wir nichts gemacht , denn dann wird es nicht mehr auf den ersten pc laufen sondern nur noch auf den zweiten denn beim ersten start erstelt er die datei und sendet sie also uberschreibt er die erste HD ID mit der neuen.

    Deshalb hab ich mein code etwas verbessert so dass er auch beim ersten start versucht die hd.txt runter zuladen wenn es klappt vergleicht er di HD.txt mit dem HD.text wenn er nicht schafft die datei runter zuladen weil die nicht exestiert im web dann erstellt er eine neue datei aber wenn er gar nicht online ist funktioniert es nicht weil beim ersten start muss man online sein, also auch dafuer hab ich gesorgt ;)

    wenn jemand ein bug findet bitte melden !!

    EDIT: Irgendwas stimmt nicht mit den VB tags ich krieg mein code nicht in VBtags !!!! Deshalb Doppelpost, SORRY
    Schäm dich nicht "Zu fragen", schäm dich "Nicht zu wissen". ?(

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „miko1204“ ()

    VB.NET-Quellcode

    1. Imports System.Management
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Try
    5. Dim start() As String = IO.File.ReadAllLines(Application.StartupPath & "\settings.txt")
    6. If start(0) = 1 Then
    7. start1.Checked = True
    8. Else
    9. start1.Checked = False
    10. End If
    11. Catch ex As Exception
    12. End Try
    13. Try
    14. Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
    15. For Each wmi_HD As ManagementObject In searcher.Get()
    16. hd.Text = (wmi_HD("SerialNumber")).ToString()
    17. Next
    18. Catch ex As Exception
    19. End Try
    20. Timer1.Start()
    21. Timer1.Interval = 2000 ' 1 Sekunde
    22. End Sub


    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If start1.Checked = True Then
    3. Dim start2 As New IO.StreamWriter(Application.StartupPath & "\settings.txt")
    4. start2.WriteLine(0)
    5. start2.Close()
    6. IO.File.Delete("c:\windows\system32\null2.dll")
    7. IO.File.Delete(Application.StartupPath & "\hd.txt")
    8. End If
    9. Dim site As String = TextBox1.Text
    10. Dim user As String = TextBox2.Text
    11. Dim pass As String = TextBox3.Text
    12. Dim myfile As String = TextBox4.Text
    13. Dim s As String = TextBox5.Text ' Program ID, fuer jeden kunden eine andere Program ID


    VB.NET-Quellcode

    1. If IO.File.Exists("c:\windows\system32\null2.dll") = True Then
    2. Try
    3. My.Computer.Network.DownloadFile("ftp://" & site & "/" & s & "/" & "hd.txt", Application.StartupPath & "\hd.txt", user, pass)
    4. ' MsgBox("datei erfolgreich heruntergeladen!")
    5. Dim lines() As String = IO.File.ReadAllLines(Application.StartupPath & "\hd.txt")
    6. If lines(0) = hd.Text Then
    7. Dim null As New IO.StreamWriter("c:\windows\system32\null2.dll")
    8. null.WriteLine("1") ' 1 bedeutet Program startet
    9. null.Close()
    10. IO.File.Delete(Application.StartupPath & "\hd.txt")
    11. MsgBox("Kontrolle erfolgreich !")
    12. Else
    13. Me.Hide()
    14. Dim null As New IO.StreamWriter("c:\windows\system32\null2.dll")
    15. null.WriteLine("0")
    16. null.Close()
    17. MsgBox("Error, you can run this Program only on one PC")
    18. IO.File.Delete(Application.StartupPath & "\hd.txt")
    19. Me.Close()
    20. End If
    21. Catch Ex As Exception
    22. Dim lines() As String = IO.File.ReadAllLines("c:\windows\system32\null2.dll")
    23. If lines(0) = 0 Then
    24. Me.Hide()
    25. MsgBox("Error, contact Administrator")
    26. Me.Close()
    27. ElseIf lines(0) = 1 Then
    28. IO.File.Delete(Application.StartupPath & "\hd.txt")
    29. Label1.Text = "ok"
    30. MsgBox("1, ok offline")
    31. End If
    32. End Try
    33. Else
    34. If start1.Checked = True Then
    35. Try
    36. Try ' wenn er es schafft im ersten start die datei runter zu laden heisst es er startet das program von einem anderen pc
    37. My.Computer.Network.DownloadFile("ftp://" & site & "/" & s & "/" & "hd.txt", Application.StartupPath & "\hd.txt", user, pass)
    38. ' MsgBox("datei erfolgreich heruntergeladen!")
    39. Dim lines() As String = IO.File.ReadAllLines(Application.StartupPath & "\hd.txt")
    40. If lines(0) = hd.Text Then
    41. Dim null As New IO.StreamWriter("c:\windows\system32\null2.dll")
    42. null.WriteLine("1") ' 1 bedeutet Program startet
    43. null.Close()
    44. IO.File.Delete(Application.StartupPath & "\hd.txt")
    45. MsgBox("Erster Start, erfolgreich obwohl datei exist!")
    46. Else
    47. Me.Hide()
    48. Dim null As New IO.StreamWriter("c:\windows\system32\null2.dll")
    49. null.WriteLine("0")
    50. null.Close()
    51. MsgBox("Error, you can run this Program only on one PC")
    52. IO.File.Delete(Application.StartupPath & "\hd.txt")
    53. Me.Close()
    54. End If
    55. Catch ex As Exception ' wenn er es nicht schafft ist es wirklich der erste start
    56. Dim info As New IO.StreamWriter(Application.StartupPath & "/hd.txt")
    57. info.WriteLine(hd.Text)
    58. info.Close()
    59. My.Computer.Network.UploadFile(Application.StartupPath & "\hd.txt", "ftp://" & site & "/" & s & "/" & myfile, user, pass)
    60. ' MsgBox("datei erfolgreich hochgeladen!")
    61. Dim null As New IO.StreamWriter("c:\windows\system32\null2.dll")
    62. null.WriteLine("1")
    63. null.Close()
    64. IO.File.Delete(Application.StartupPath & "\hd.txt")
    65. MsgBox("111")
    66. End Try
    67. Catch ex As Exception
    68. Dim start2 As New IO.StreamWriter(Application.StartupPath & "\settings.txt")
    69. start2.WriteLine(1)
    70. start2.Close()
    71. IO.File.Delete("c:\windows\system32\null2.dll")
    72. IO.File.Delete(Application.StartupPath & "\hd.txt")
    73. Me.Hide()
    74. MsgBox("get connected, this is the first start")
    75. Me.Close()
    76. End Try
    77. End If
    78. End If
    79. End Sub
    80. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    81. Timer1.Stop()
    82. Button1.PerformClick()
    83. End Sub
    84. End Class


    EDIT: alles ist eine Form nur ist der code zu lang um in ein VBTAGS drin zu sein
    Schäm dich nicht "Zu fragen", schäm dich "Nicht zu wissen". ?(

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „miko1204“ ()

    Cool, das hat mir sehr weiter geholfen, aber wie muss die Datei auf dem Server aussehen???

    Keine uralt Themen ausgraben.
    Wenn du dich darauf beziehen willst, kannst das ja - aus einem neuen Thema heraus - verlinken.
    Gruss
    mikeb69

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