Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Tipps & Tricks
Autor
Nachricht
^^kev####
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 476
Wohnort: Haan

2000 / 2003 / XP / Vista Installationsschlüssel auslesen
Verfasst am: 01.05.2008, 13:20

Beschreibung:
Dieses Snippet liest den Produkt-Installationsschlüssel (Schlüssel auf dem Echtheitszertifikat) und die Seriennummer aus.

Der Schlüssel wird als Listview Item zurückgegeben und kann somit direkt in ein Listview-Steuerelement eingetragen werden.

Funktion:
Visual Basic: [code]Public Function sGetXPKey() As ListViewItem

'Registry öffnen und Wert auslesen (byte array)
Dim RegKey As RegistryKey = _
Registry.LocalMachine.OpenSubKey("SoftwareMicrosoftWindows NTCurrentVersion", False)
Dim bytDPID() As Byte = RegKey.GetValue("DigitalProductID")
'Nur die benötigten Teile ins Array laden
' Key beginnt ab byte 52 und ist 15 Bytes lang.
Dim bytKey(14) As Byte '0-14 = 15 bytes
Array.Copy(bytDPID, 52, bytKey, 0, 15)
'Unser "Array" beinhaltet nun gültige Zeichen
Dim strChar As String = "BCDFGHJKMPQRTVWXY2346789"
'jetzt muss der decodierte Schlüssel zurückgegeben werden
Dim strKey As String = ""

For j As Integer = 0 To 24
Dim nCur As Short = 0
For i As Integer = 14 To 0 Step -1
nCur = CShort(nCur * 256 Xor bytKey(i))
bytKey(i) = CByte(Int(nCur / 24))
nCur = CShort(nCur Mod 24)
Next
strKey = strChar.Substring(nCur, 1) & strKey
Next
'nun muss das Ganze in einen String eingestzt werden.
For i As Integer = 4 To 1 Step -1
strKey = strKey.Insert(i * 5, "-")
Next


Dim strPName As String = RegKey.GetValue("ProductName")
Dim strPID As String = RegKey.GetValue("ProductID")

Dim lvi As New ListViewItem
lvi.Text = strPName

Try
lvi.SubItems.Add(strKey)
Catch ex As Exception
lvi.SubItems.Add("n.a.")
End Try


Try
lvi.SubItems.Add(strPID)
Catch ex As Exception
lvi.SubItems.Add("n.a.")
End Try

RegKey.Close()
Return lvi
End Function
[/code]

Quelle: dotnet-snippets.de
_________________
 
evolut!on
Newbie
Newbie

Anmeldedatum: 10.06.2008
Beiträge: 8


Verfasst am: 10.06.2008, 20:09

Kann man die Funktion auch so verwenden, dass der Key als String ausgegeben wird und weiterverwendet werden kann ?
_________________
 
tr4st
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 486


Verfasst am: 10.06.2008, 20:27

Wo liegt das Problem?

Visual Basic: [code]Private Function sGetXPKey() As String

'Registry öffnen und Wert auslesen (byte array)
Dim RegKey As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SoftwareMicrosoftWindows NTCurrentVersion", False)
Dim bytDPID() As Byte = RegKey.GetValue("DigitalProductID")
'Nur die benötigten Teile ins Array laden
' Key beginnt ab byte 52 und ist 15 Bytes lang.
Dim bytKey(14) As Byte '0-14 = 15 bytes
Array.Copy(bytDPID, 52, bytKey, 0, 15)
'Unser "Array" beinhaltet nun gültige Zeichen
Dim strChar As String = "ABCDFGHJKMPQRTVWXY123467890"
'jetzt muss der decodierte Schlüssel zurückgegeben werden
Dim strKey As String = ""

For j As Integer = 0 To 24
Dim nCur As Short = 0
For i As Integer = 14 To 0 Step -1
nCur = CShort(nCur * 256 Xor bytKey(i))
bytKey(i) = CByte(Int(nCur / 24))
nCur = CShort(nCur Mod 24)
Next
strKey = strChar.Substring(nCur, 1) & strKey
Next
'nun muss das Ganze in einen String eingestzt werden.
For i As Integer = 4 To 1 Step -1
strKey = strKey.Insert(i * 5, "-")
Next

Dim strPName As String = RegKey.GetValue("ProductName")
Dim strPID As String = RegKey.GetValue("ProductID")

RegKey.Close()

Return strKey & " + " & strPID

End Function[/code]

Und zur Ausgabe.

Visual Basic: [code]MessageBox.Show(sGetXPKey())[/code]

Und ^^kev#### du hattest ein paar Fehler in der Funktion Wink
 
evolut!on
Newbie
Newbie

Anmeldedatum: 10.06.2008
Beiträge: 8


Verfasst am: 10.06.2008, 20:40

Tur mir ja leid, dass ich dich mit soetwas Einfachem nerve, aber ich bin nunmal leider noch Anfänger, da ist jede Hilfe super =)
 
r4z3r
Poster
Poster

Anmeldedatum: 16.04.2008
Beiträge: 173


Verfasst am: 11.06.2008, 11:33

Du nervst ihn bestimmt nicht Wink Schau dir mal ein paar grundlegende Tutorials an. Zum Thema Prozeduren hat ZiG ein super Tutorial geschrieben:
http://www.visual-basic-forum.de/viewtopic.php/prozeduren-23.html
Das wird dir sicherlich weiterhelfen.

Es gibt sehr viele Grundlagen Tutorials hier, schau dich einfach mal ein bisschen um.

MfG
_________________


 
evolut!on
Newbie
Newbie

Anmeldedatum: 10.06.2008
Beiträge: 8


Verfasst am: 17.06.2008, 20:13


Es klappt so auf jeden Fall bis jetzt super, werde mir aber trotzdem die Grundlagen Tutorials anschauen =)
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Tipps & Tricks

Tags: auslesen, vista, digitalproductid, registry, function

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Problem mit always on top funktion 1039 30.10.2009, 11:26
Keine neuen Beiträge IntStr()funktion 1177 11.10.2007, 08:49
Keine neuen Beiträge TopMost Funktion unter DirectX 921 27.07.2007, 10:48
Keine neuen Beiträge Wie Funktion nutzen ? 1102 29.06.2007, 20:59
Keine neuen Beiträge update funktion einbauen 1341 28.01.2007, 23:11
 



[ Time: 0.2753s ][ Queries: 101 (0.0353s) ][ GZIP on - Debug on ]