Brauche Hilfe beim Übersetzen eines VBScript in die Sprache VB

  • VB.NET

Es gibt 45 Antworten in diesem Thema. Der letzte Beitrag () ist von Th3RaZe.

    @Mono
    Du musst also schauen, wie du WshShell.RegRead(key & "DigitalProductId") in VB.NET umsetzt. Suche also nach Registry Schlüssel auslesen VB.NET.

    LG


    gut danke :) ich hab aber dann noch ein anderes Problem, und zwar soll ja wenn nur B rauskommt die letzten 5 chars ausgewertet werden dort hab ich auch eine Stelle wo ich nicht weiter kommen tue.

    VB.NET-Quellcode

    1. Function GetIsPrimaryWindowsSKU(objProduct)
    2. Dim iPrimarySku As Integer
    3. Dim bIsAddOn As Boolean
    4. 'Assume this is not the primary SKU
    5. iPrimarySku = 0
    6. 'Verify the license is for Windows, that it has a partial key, and that
    7. If (LCase(objProduct.ApplicationId) = WindowsAppId And objProduct.PartialProductKey <> "") Then
    8. 'If we can get verify the AddOn property then we can be certain
    9. On Error Resume Next
    10. bIsAddOn = objProduct.LicenseIsAddon
    11. If Err.Number = 0 Then
    12. If bIsAddOn = True Then
    13. iPrimarySku = 0
    14. Else
    15. iPrimarySku = 1
    16. End If
    17. Else
    18. 'If we can not get the AddOn property then we assume this is a previous version
    19. 'and we return a value of Uncertain, unless we can prove otherwise
    20. If (IsKmsClient(objProduct.Description) Or IsKmsServer(objProduct.Description)) Then
    21. 'If the description is KMS related, we can be certain that this is a primary SKU
    22. iPrimarySku = 1
    23. Else
    24. 'Indeterminate since the property was missing and we can't verify KMS
    25. iPrimarySku = 2
    26. End If
    27. End If
    28. End If
    29. GetIsPrimaryWindowsSKU = iPrimarySku
    30. End Function


    bei der Zeile:

    VB.NET-Quellcode

    1. If (LCase(objProduct.ApplicationId) = WindowsAppId And objProduct.PartialProductKey <> "") Then


    kommen immer Fehlermeldungen, mein Kollege sagt das es dann hier einen Fehler gibt:

    VB.NET-Quellcode

    1. Function GetLast5CharWin(ProductKey) 'Funktion zum getten der letzten 5 chars von ProductKey
    2. Dim objProduct As Object
    3. Dim strServiceSelectClause As String
    4. Dim objProductIter As Object
    5. Dim strIterSelectClause As String
    6. Dim strProductSelectClause As String
    7. Dim strDescription As String = ""
    8. Dim bShowSkuInformation As Boolean
    9. Dim iIsPrimaryWindowsSku As Integer
    10. Dim bUseDefault As Boolean
    11. Dim productKeyFound As Boolean
    12. Dim g_objWMIService As Object
    13. Dim g_objRegistry As Object
    14. Dim objService As Object
    15. g_objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'WMI eigenschaften auslesen
    16. g_objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 'WMI eigenschaften auslesen in der Registry
    17. productKeyFound = False 'der Boolean wurde auf False gesetzt
    18. strServiceSelectClause =
    19. "KeyManagementServiceListeningPort, KeyManagementServiceDnsPublishing, " &
    20. "KeyManagementServiceLowPriority, ClientMachineId, KeyManagementServiceHostCaching, " &
    21. "Version"
    22. strProductSelectClause =
    23. ProductIsPrimarySkuSelectClause & ", " &
    24. "ProductKeyID, ProductKeyChannel, OfflineInstallationId, " &
    25. "ProcessorURL, MachineURL, UseLicenseURL, ProductKeyURL, ValidationURL, " &
    26. "GracePeriodRemaining, LicenseStatus, LicenseStatusReason, EvaluationEndDate, " &
    27. "VLRenewalInterval, VLActivationInterval, KeyManagementServiceLookupDomain, KeyManagementServiceMachine, " &
    28. "KeyManagementServicePort, DiscoveredKeyManagementServiceMachineName, " &
    29. "DiscoveredKeyManagementServiceMachinePort, DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceProductKeyID," &
    30. "TokenActivationILID, TokenActivationILVID, TokenActivationGrantNumber," &
    31. "TokenActivationCertificateThumbprint, TokenActivationAdditionalInfo, TrustedTime," &
    32. "ADActivationObjectName, ADActivationObjectDN, ADActivationCsvlkPid, ADActivationCsvlkSkuId, VLActivationTypeEnabled, VLActivationType," &
    33. "IAID, AutomaticVMActivationHostMachineName, AutomaticVMActivationLastActivationTime, AutomaticVMActivationHostDigitalPid2"
    34. objService = GetServiceObject(strServiceSelectClause)
    35. strIterSelectClause = ProductIsPrimarySkuSelectClause
    36. For Each objProductIter In GetProductCollection(strIterSelectClause, EmptyWhereClause)
    37. ' Display information if:
    38. ' parm = "all" or
    39. ' ActID = parm or
    40. ' default to current ActID (parm = "" and IsPrimaryWindowsSKU is 1 or 2)
    41. iIsPrimaryWindowsSku = GetIsPrimaryWindowsSKU(objProductIter)
    42. bUseDefault = False
    43. bShowSkuInformation = False
    44. If ((iIsPrimaryWindowsSku = 1) Or (iIsPrimaryWindowsSku = 2)) Then
    45. bUseDefault = True
    46. bShowSkuInformation = True
    47. End If
    48. If (bShowSkuInformation) Then
    49. objProduct = GetProductObject(strProductSelectClause, "id = '" & objProductIter.ID & "'")
    50. productKeyFound = True
    51. If objProduct.PartialProductKey <> "" Then
    52. GetLast5CharWin = "XXXXX-XXXXX-XXXXX-XXXXX-" & objProduct.PartialProductKey
    53. Exit For
    54. End If
    55. End If
    56. Next
    57. End Function
    kommen immer Fehlermeldungen.


    Ist keine gute Fehlerbeschreibung. Wenn du Hilfe möchtest, dann solltest du möglichst genau erklären was passiert, was soll passieren, wie lauten die EXAKTEN Fehlermeldungen und am besten schaust du dir auch an, wie man richtig debuggt in Visual Studio.
    Das ist meine Signatur und sie wird wunderbar sein!
    @Mono Fehlermeldung: Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in Key_Auslesen.exe aufgetreten.bei

    VB.NET-Quellcode

    1. For Each objProductIter In GetProductCollection(strIterSelectClause, EmptyWhereClause)


    in

    VB.NET-Quellcode

    1. Function GetLast5CharWin(ProductKey) 'Funktion zum getten der letzten 5 chars von ProductKey
    2. Dim objProduct As Object
    3. Dim strServiceSelectClause As String
    4. Dim objProductIter As Object
    5. Dim strIterSelectClause As String
    6. kann gerade sein das ich komplett durcheinander bin.
    7. Dim strProductSelectClause As String
    8. Dim strDescription As String = ""
    9. Dim bShowSkuInformation As Boolean
    10. Dim iIsPrimaryWindowsSku As Integer
    11. Dim bUseDefault As Boolean
    12. Dim productKeyFound As Boolean
    13. Dim g_objWMIService As Object
    14. Dim g_objRegistry As Object
    15. Dim objService As Object
    16. g_objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'WMI eigenschaften auslesen
    17. g_objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 'WMI eigenschaften auslesen in der Registry
    18. productKeyFound = False 'der Boolean wurde auf False gesetzt
    19. strServiceSelectClause =
    20. "KeyManagementServiceListeningPort, KeyManagementServiceDnsPublishing, " &
    21. "KeyManagementServiceLowPriority, ClientMachineId, KeyManagementServiceHostCaching, " &
    22. "Version"
    23. strProductSelectClause =
    24. ProductIsPrimarySkuSelectClause & ", " &
    25. "ProductKeyID, ProductKeyChannel, OfflineInstallationId, " &
    26. "ProcessorURL, MachineURL, UseLicenseURL, ProductKeyURL, ValidationURL, " &
    27. "GracePeriodRemaining, LicenseStatus, LicenseStatusReason, EvaluationEndDate, " &
    28. "VLRenewalInterval, VLActivationInterval, KeyManagementServiceLookupDomain, KeyManagementServiceMachine, " &
    29. "KeyManagementServicePort, DiscoveredKeyManagementServiceMachineName, " &
    30. "DiscoveredKeyManagementServiceMachinePort, DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceProductKeyID," &
    31. "TokenActivationILID, TokenActivationILVID, TokenActivationGrantNumber," &
    32. "TokenActivationCertificateThumbprint, TokenActivationAdditionalInfo, TrustedTime," &
    33. "ADActivationObjectName, ADActivationObjectDN, ADActivationCsvlkPid, ADActivationCsvlkSkuId, VLActivationTypeEnabled, VLActivationType," &
    34. "IAID, AutomaticVMActivationHostMachineName, AutomaticVMActivationLastActivationTime, AutomaticVMActivationHostDigitalPid2"
    35. objService = GetServiceObject(strServiceSelectClause)
    36. strIterSelectClause = ProductIsPrimarySkuSelectClause
    37. For Each objProductIter In GetProductCollection(strIterSelectClause, EmptyWhereClause)
    38. ' Display information if:
    39. ' parm = "all" or
    40. ' ActID = parm or
    41. ' default to current ActID (parm = "" and IsPrimaryWindowsSKU is 1 or 2)
    42. iIsPrimaryWindowsSku = GetIsPrimaryWindowsSKU(objProductIter)
    43. bUseDefault = False
    44. bShowSkuInformation = False
    45. If ((iIsPrimaryWindowsSku = 1) Or (iIsPrimaryWindowsSku = 2)) Then
    46. bUseDefault = True
    47. bShowSkuInformation = True
    48. End If
    49. If (bShowSkuInformation) Then
    50. objProduct = GetProductObject(strProductSelectClause, "id = '" & objProductIter.ID & "'")
    51. productKeyFound = True
    52. If objProduct.PartialProductKey <> "" Then
    53. GetLast5CharWin = "XXXXX-XXXXX-XXXXX-XXXXX-" & objProduct.PartialProductKey
    54. Exit For
    55. End If
    56. End If
    57. Next
    58. End Function

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

    Würdest Du bitte das permanente Zitieren Deines Vorposters unterlassen. X(

    Th3RaZe schrieb:

    richtig benennen
    Es gibt Fehler, die beim Kompilieren auftreten.
    Dort kannst Du den Code und die Fehlermeldung posten.
    Dann kann es beim Debuggen Exceptions geben. Auch da kannst Du den Code und die Meldung posten.
    Wo also ist das Problem?
    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!
    Weißt du wie man Haltepunkte setzt und man per Einzelschritt durch den Code läuft?
    Am besten du machst dies mal und schaust dir an, was genau Nothing ist (Einfach nur mit der Maus über eine Variable "fahren" und dann kurz warten zeigt dir zB deren Inhalt an). Vermutlich iwas bei der WMI Abfrage. Aber ich kanns aus deiner Fehlermeldung nicht erkennen.
    Das ist meine Signatur und sie wird wunderbar sein!

    Th3RaZe schrieb:

    VB.NET-Quellcode

    1. GetProductCollection()
    Setze da einen Haltepunkt rein und sieh nach, was da passiert.
    Gugst Du auch hier.
    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!
    @RodFromGermany
    da passiert dies: System.NullReferenceException wurde nicht behandelt.
    HResult=-2147467261
    Message=Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt.
    Source=Microsoft.VisualBasic
    StackTrace:
    bei Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance)
    bei Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
    bei Key_Auslesen.Module1.GetServiceObject(Object strQuery)
    bei Key_Auslesen.Module1.GetLast5CharWin(Object ProductKey)
    bei Key_Auslesen.Module1.Main()
    bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    bei System.Threading.ThreadHelper.ThreadStart()
    InnerException:

    Th3RaZe schrieb:

    System.NullReferenceException wurde nicht behandelt.
    Alles bis zum StackTrace sowie der entsprechende Code. Poste mal den.
    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!
    @RodFromGermany

    VB.NET-Quellcode

    1. Dim strComputer As String
    2. Dim Key As String = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" & REG_VALUE
    3. Dim DigitalID As String = Key
    4. Dim ProductKey As String = ConvertToKey(DigitalID)


    Global

    VB.NET-Quellcode

    1. Function ConvertToKey(Key) 'die Funktion zum Konvertieren zu dem Schlüssel aus der Value vom Key also der Registry Pfad
    2. Const KeyOffset = 52 'zum abgleichen mit key
    3. 'Using getKey As RegistryKey = Registry.LocalMachine.OpenSubKey(Key)
    4. ' Dim Shell1 As String = getKey.GetValue("Shell1")
    5. 'End Using
    6. 'Dim BaseKey As RegistryKey = Nothing
    7. 'Dim SubKey As RegistryKey = Nothing
    8. 'If Environment.Is64BitOperatingSystem = True Then
    9. ' BaseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
    10. ' SubKey = BaseKey.OpenSubKey("SOFTWARE\Microsoft\Windows" & " NT\CurrentVersion\", False)
    11. 'Else
    12. ' SubKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\", False)
    13. 'End If
    14. 'Dim getkey As String
    15. 'getkey = SubKey.GetValue("DigitalProductID")
    16. Dim isWin8 As Integer 'Deklarieren
    17. Dim Chars As String 'Deklarieren
    18. Dim i As Integer 'Deklarieren
    19. Dim X As Integer 'Deklarieren
    20. Dim Cur As Integer 'Deklarieren
    21. Dim KeyOutput As String 'Deklarieren
    22. Dim Last As Integer 'Deklarieren
    23. Dim keypart1 As String 'Deklarieren
    24. Dim insert As String 'Deklarieren
    25. On Error Resume Next
    26. isWin8 = (Key(66) \ 6) & 1
    27. i = 24 'i ist der Wert= 24
    28. Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
    29. Chars = "BCDFGHJKMPQRTVWXY2346789" 'Die chars von MS zum decrypten des Keys
    30. KeyOutput = "" 'damit kein wert in Output ist
    31. Dim a As String
    32. Dim b As String
    33. Dim c As String
    34. Dim d As String
    35. Dim e As String
    36. Do 'Solange Loopen bis diese Werte erreicht sind Cur=0 und X = 14
    37. Cur = 0 'ziel Wert
    38. X = 14 'ziel Wert
    39. Do 'Solange Loopen bis Wert erreicht ist Cur mal 256 etc
    40. Cur = Cur * 256
    41. Cur = Key(X + KeyOffset) + Cur
    42. Key(X + KeyOffset) = (Cur \ 24)
    43. Cur = Cur Mod 24
    44. X = X - 1
    45. Loop While X >= 0 'Loopen bis X größer als ergebnis 0
    46. i = i - 1
    47. KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
    48. Last = Cur
    49. Loop While i >= 0
    50. If (isWin8 = 1) Then 'Wenn es Win8 ist dann
    51. keypart1 = Mid(KeyOutput, 2, Last) 'String keypart soll bestückt werden mit Keyoutput, 2 und mit dem String Last
    52. insert = "N" 'Insert bekommt den Wert N
    53. KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0) 'Keyoutput soll den Wert aus = ersetzen irgendwo ist dann da N mit decrypted
    54. If Last = 0 Then KeyOutput = insert & KeyOutput 'Wenn der String Last den wert gleich 0 hat dann soll der String Keyoutput gleich insert und Keyoutput
    55. End If ' Ende
    56. a = Mid(KeyOutput, 1, 5) 'soll den langen String aussplitten aller 5 zeichen kommt ein -
    57. b = Mid(KeyOutput, 6, 5)
    58. c = Mid(KeyOutput, 11, 5)
    59. d = Mid(KeyOutput, 16, 5)
    60. e = Mid(KeyOutput, 21, 5)
    61. ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e
    62. End Function 'ende der Funktion


    dort versuche ich immernoch den schlüssel auszulesen

    VB.NET-Quellcode

    1. Function GetComputerName() 'Den PC namen raussuchen
    2. Dim objNetwork As Object 'createt ein neues Object
    3. objNetwork = CreateObject("WScript.Network") 'befüllt dieses Object
    4. GetComputerName = objNetwork.ComputerName 'bekommt den PC namen
    5. objNetwork = Nothing 'speichert
    6. End Function 'ende der Funktion und springe wieder nach oben


    VB.NET-Quellcode

    1. If ProductKey = "BBBBB-BBBBB-BBBBB-BBBBB-BBBBB" Then 'wenn der Wert B ist dann
    2. strL5C = GetLast5CharWin(ProductKey) 'rufe die Funktion auf
    3. If strL5C <> "" Then ProductKey = strL5C 'wenn der String keinen Wert hat dann soll der Productkey das ergebniss der Funktion zu den den getten der letzten 5 chars
    4. End If


    VB.NET-Quellcode

    1. Function GetLast5CharWin(ProductKey) 'Funktion zum getten der letzten 5 chars von ProductKey
    2. Dim objProduct As Object
    3. Dim strServiceSelectClause As String
    4. Dim objProductIter As Object
    5. Dim strIterSelectClause As String
    6. Dim strProductSelectClause As String
    7. Dim strDescription As String = ""
    8. Dim bShowSkuInformation As Boolean
    9. Dim iIsPrimaryWindowsSku As Integer
    10. Dim bUseDefault As Boolean
    11. Dim productKeyFound As Boolean
    12. Dim g_objWMIService As Object
    13. Dim g_objRegistry As Object
    14. Dim objService As Object
    15. g_objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'WMI eigenschaften auslesen
    16. g_objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 'WMI eigenschaften auslesen in der Registry
    17. productKeyFound = False 'der Boolean wurde auf False gesetzt
    18. strServiceSelectClause =
    19. "KeyManagementServiceListeningPort, KeyManagementServiceDnsPublishing, " &
    20. "KeyManagementServiceLowPriority, ClientMachineId, KeyManagementServiceHostCaching, " &
    21. "Version"
    22. strProductSelectClause =
    23. ProductIsPrimarySkuSelectClause & ", " &
    24. "ProductKeyID, ProductKeyChannel, OfflineInstallationId, " &
    25. "ProcessorURL, MachineURL, UseLicenseURL, ProductKeyURL, ValidationURL, " &
    26. "GracePeriodRemaining, LicenseStatus, LicenseStatusReason, EvaluationEndDate, " &
    27. "VLRenewalInterval, VLActivationInterval, KeyManagementServiceLookupDomain, KeyManagementServiceMachine, " &
    28. "KeyManagementServicePort, DiscoveredKeyManagementServiceMachineName, " &
    29. "DiscoveredKeyManagementServiceMachinePort, DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceProductKeyID," &
    30. "TokenActivationILID, TokenActivationILVID, TokenActivationGrantNumber," &
    31. "TokenActivationCertificateThumbprint, TokenActivationAdditionalInfo, TrustedTime," &
    32. "ADActivationObjectName, ADActivationObjectDN, ADActivationCsvlkPid, ADActivationCsvlkSkuId, VLActivationTypeEnabled, VLActivationType," &
    33. "IAID, AutomaticVMActivationHostMachineName, AutomaticVMActivationLastActivationTime, AutomaticVMActivationHostDigitalPid2"
    34. objService = GetServiceObject(strServiceSelectClause)
    35. strIterSelectClause = ProductIsPrimarySkuSelectClause
    36. For Each objProductIter In GetProductCollection(strIterSelectClause, EmptyWhereClause)
    37. ' Display information if:
    38. ' parm = "all" or
    39. ' ActID = parm or
    40. ' default to current ActID (parm = "" and IsPrimaryWindowsSKU is 1 or 2)
    41. iIsPrimaryWindowsSku = GetIsPrimaryWindowsSKU(objProductIter)
    42. bUseDefault = False
    43. bShowSkuInformation = False
    44. If ((iIsPrimaryWindowsSku = 1) Or (iIsPrimaryWindowsSku = 2)) Then
    45. bUseDefault = True
    46. bShowSkuInformation = True
    47. End If
    48. If (bShowSkuInformation) Then
    49. objProduct = GetProductObject(strProductSelectClause, "id = '" & objProductIter.ID & "'")
    50. productKeyFound = True
    51. If objProduct.PartialProductKey <> "" Then
    52. GetLast5CharWin = "XXXXX-XXXXX-XXXXX-XXXXX-" & objProduct.PartialProductKey
    53. Exit For
    54. End If
    55. End If
    56. Next
    57. End Function


    VB.NET-Quellcode

    1. Function GetServiceObject(strQuery)
    2. Dim objService As Object = ""
    3. Dim colServices As String
    4. colServices = g_objWMIService.ExecQuery("SELECT " & strQuery & " FROM " & ServiceClass)
    5. For Each objService In colServices
    6. Exit For
    7. Next
    8. GetServiceObject = objService
    9. End Function


    dann kommt der StackTrace

    was noch Global ist:

    VB.NET-Quellcode

    1. Dim g_objWMIService As Object
    2. Dim g_strComputer As String = "."
    3. Const UserField = "dcu_ProductKeyWindows"
    4. '*** REGISTRY ******************************************************************
    5. Const HKEY_LOCAL_MACHINE = &H80000002
    6. Const REG_PATH = "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion\" 'der Pfad zur Registry
    7. Const REG_VALUE = "DigitalProductId" 'der Pfad in der Registry zur Value/ ProductKey
    8. Const HR_SL_E_PKEY_NOT_INSTALLED = &HC004F014
    9. Const HR_INVALID_ARG = &H80070057
    10. '*** WMI CLASS NAMES ***************************************************
    11. Const ServiceClass = "SoftwareLicensingService"
    12. Const ProductClass = "SoftwareLicensingProduct"
    13. Const WindowsAppId = "55c92734-d682-4d71-983e-d6ec3f16059f"
    14. Const ProductIsPrimarySkuSelectClause = "ID, ApplicationId, PartialProductKey, LicenseIsAddon, Description, Name"
    15. Const EmptyWhereClause = ""
    16. Const wbemImpersonationLevelImpersonate = 3
    17. Const wbemAuthenticationLevelPktPrivacy = 6

    Th3RaZe schrieb:

    Global

    RodFromGermany schrieb:

    der entsprechende Code
    , nicht der komplette.
    Fang an mit genau der Zeile, in der der Fehler auftritt.
    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!
    @RodFromGermany
    hier:

    VB.NET-Quellcode

    1. Function GetServiceObject(strQuery)
    2. Dim objService As Object = ""
    3. Dim colServices As String
    4. colServices = g_objWMIService.ExecQuery("SELECT " & strQuery & " FROM " & ServiceClass)
    5. For Each objService In colServices
    6. Exit For
    7. Next
    8. GetServiceObject = objService
    9. End Function


    in dieser Zeile:

    VB.NET-Quellcode

    1. ​colServices = g_objWMIService.ExecQuery("SELECT " & strQuery & " FROM " & ServiceClass)

    Th3RaZe schrieb:

    Zeile
    OHa.
    Setz da einen Haltepunkt drauf und sieh Dir den Inhalt von g_objWMIService an.
    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!
    @RodFromGermany

    Ja mir ist aufgefallen das kein String aufgeführt wird unten der so heißt :S

    das heißt , dass er hier

    VB.NET-Quellcode

    1. ​ g_objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'WMI eigenschaften auslesen
    2. g_objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 'WMI eigenschaften auslesen in der Registry


    keinen Wert bekommt

    Th3RaZe schrieb:

    Registry
    Was ist dies:

    Th3RaZe schrieb:

    GetObject
    Steig mal um auf die
    Microsoft.Win32.Registry-Klasse, gugst Du hier.
    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!
    HI.

    Am besten steigst du auch gleich noch auf die NET WMI Klassen um.
    Füge deinem Projekt einen Verweis auf System.Management hinzu und schreib bei den Imports:

    Imports System.Management

    Dann kannst du so auf WMI Klassen zugreifen:

    (Das ist ein zufälliges Beispiel)

    VB.NET-Quellcode

    1. Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM SoftwareLicensingService")
    2. For Each queryObj As ManagementObject in searcher.Get()
    3. Console.WriteLine("-----------------------------------")
    4. Console.WriteLine("SoftwareLicensingService instance")
    5. Console.WriteLine("-----------------------------------")
    6. Console.WriteLine("ClientMachineID: {0}", queryObj("ClientMachineID"))
    7. Console.WriteLine("KeyManagementServiceDnsPublishing: {0}", queryObj("KeyManagementServiceDnsPublishing"))
    8. Console.WriteLine("KeyManagementServiceFailedRequests: {0}", queryObj("KeyManagementServiceFailedRequests"))
    9. Console.WriteLine("KeyManagementServiceHostCaching: {0}", queryObj("KeyManagementServiceHostCaching"))
    10. Console.WriteLine("KeyManagementServiceLicensedRequests: {0}", queryObj("KeyManagementServiceLicensedRequests"))
    11. Console.WriteLine("KeyManagementServiceListeningPort: {0}", queryObj("KeyManagementServiceListeningPort"))
    12. Console.WriteLine("Version: {0}", queryObj("Version"))
    13. Next
    Das ist meine Signatur und sie wird wunderbar sein!

    Th3RaZe schrieb:

    das Object
    ist was genau?
    Mögliche Antworten:
    • Ein String
    • Eine Instanz der Klasse XYZ
    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!