Wie kann ich in ein WMI Script hex Zahlenarray definieren?
Hallo
Ich habe folgendes Problem. Ich bin gerade dabei ein WMI Script zu schreiben was verschieden Schlüssel und Werte in die Registry schreibt. Das große Problem was ich dabei habe, ist das mehrere hex Werte eingetragen werden müssen. Ich habe die suche und google schon bemüht finde aber nichts passendes. Kann mir jemand helfen und sagen wie ich das am besten realisiere. Ist wichtig muss bei uns im AD verteilt werden der Chef hängt mir schon im Nacken.
Ein Auszug aus dem Script damit man es sich vielleicht besser vorstellen kann.
In dem Array sieht man das es jede Menge Hex Zahlen sin die so WMI nicht akzeptiert
MfG
Andy
Ich habe folgendes Problem. Ich bin gerade dabei ein WMI Script zu schreiben was verschieden Schlüssel und Werte in die Registry schreibt. Das große Problem was ich dabei habe, ist das mehrere hex Werte eingetragen werden müssen. Ich habe die suche und google schon bemüht finde aber nichts passendes. Kann mir jemand helfen und sagen wie ich das am besten realisiere. Ist wichtig muss bei uns im AD verteilt werden der Chef hängt mir schon im Nacken.
Ein Auszug aus dem Script damit man es sich vielleicht besser vorstellen kann.
....
Set wmireg = GetObject("winmgmts:root\default:StdRegProv")
Const HKLM = &H80000002
key = "SOFTWARE\ORL\WinVNC3"
result = wmireg.CreateKey(HKLM, key)
result = wmireg.SetDWORDValue(HKLM, key, "MSLogonRequired", 00000001)
result = wmireg.SetDWORDValue(HKLM, key, "NewMSLogon", 00000001)
binear = Array(02,00,2c,00,01,00,00,00,00,00,24,00,03,00,00,00,01,05,00,00,00,00,00,05,15,00,00,00,79,e3,fc,53,16,c0,07,e5,3b,2b,25,5e,03,00)
result = wmireg.SetBinaryValue(HKLM, key,"ACL", binear)
MfG
Andy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 61271
Url: https://administrator.de/contentid/61271
Ausgedruckt am: 26.11.2024 um 14:11 Uhr
10 Kommentare
Neuester Kommentar
Natürlich nicht, es sind ja auch keine Hex Zahlen.
Wenn Du Dein Skript genau anschaust, siehst Du wie eine Hex Zahl in VBS auszusehen hat:
Const HKLM = &H80000002
Wenn Du jetzt den Array entsprechend änderst:
binear = Array(&H02,&H00,&H2c,&H00,... (Also bei den 00 und 02 kann man &H weglassen)
dann gehts auch.
Wenn Du Dein Skript genau anschaust, siehst Du wie eine Hex Zahl in VBS auszusehen hat:
Const HKLM = &H80000002
Wenn Du jetzt den Array entsprechend änderst:
binear = Array(&H02,&H00,&H2c,&H00,... (Also bei den 00 und 02 kann man &H weglassen)
dann gehts auch.
Hallo Flieg!
Ist nur eine Abwandlung von AndreasHoster's Vorschlag:
Zunächst die ganzen Hex-Zahlen mit einem beliebigen Trennzeichen (hier eben ",") in einen normalen String packen, diesen mittels "Split"-Funktion in ein Array aufsplitten lassen und aus dem (Text-)Array "binaer" über das Voranstellen von "&H" und die nachfolgende Konvertierung mit "CInt()" die jeweiligen Zahlenwerte in ein weiteres Array "binaer2" (dessen Größe über das "ReDim"-Statement entsprechend der Größe des "binaer"-Arrays festgelegt wurde) schreiben.
Grüße
bastla
Ist nur eine Abwandlung von AndreasHoster's Vorschlag:
Zunächst die ganzen Hex-Zahlen mit einem beliebigen Trennzeichen (hier eben ",") in einen normalen String packen, diesen mittels "Split"-Funktion in ein Array aufsplitten lassen und aus dem (Text-)Array "binaer" über das Voranstellen von "&H" und die nachfolgende Konvertierung mit "CInt()" die jeweiligen Zahlenwerte in ein weiteres Array "binaer2" (dessen Größe über das "ReDim"-Statement entsprechend der Größe des "binaer"-Arrays festgelegt wurde) schreiben.
Grüße
bastla
Moin Flieg,
ich habe mir folgenden Kommentar gestern schon verkniffen, hole es aber heute nach...
Meine Empfehlung zumindest ist (zumindest bei Skritsprachen, die unterschiedliche Datentypen kennen, bei Batch ist es nicht nötig):
Dein Schnipsel unter Berücksichtigung dieser drei Pünktchen würde in etwa so aussehen können:
[ungetestete Skizze]
Grüße
Biber
ich habe mir folgenden Kommentar gestern schon verkniffen, hole es aber heute nach...
Meine Empfehlung zumindest ist (zumindest bei Skritsprachen, die unterschiedliche Datentypen kennen, bei Batch ist es nicht nötig):
- benenne Variablennamen entweder deutsch oder denglish
- orientiere Dich am Besten an Konventionen wie der Ungarischen Notation
- und bei VB-Varianten erzwingt ein "Option Explicit" eine gewisse Disziplin
Dein Schnipsel unter Berücksichtigung dieser drei Pünktchen würde in etwa so aussehen können:
' optional: Option Explicit
' Konverntionen z.B. Präfix "o" für Objekte, "str" für Strings,
' "b" für boolesche Variablen...
Set owmireg = GetObject("winmgmts:root\default:StdRegProv")
Const HKLM = &H80000002
strKey = "SOFTWARE\ORL\WinVNC3"
bResult = owmireg.CreateKey(HKLM, key)
bresult = owmireg.SetDWORDValue(HKLM, strKey, "MSLogonRequired", 00000001)
bresult = owmireg.SetDWORDValue(HKLM, strKey, "NewMSLogon", 00000001)
aOfStr = "02,00,2c,00,01,00,00,00,00,00,00,00,00,00,00,05,15,00,00,00,79,e3,fc,53,16,c0,ea,32,07,e5,3b,2b,25,5e,03,00"
aOfBinary = Split(ar1,",")
ReDim aOfBinary2(UBound(aOfBinary))
For i = LBound(binaer) To UBound(aOfBinary)
aOfBinary2(i) = CInt("&h" & aOfBinary(i))
next
bResult = owmireg.SetBinaryValue(HKLM, strKey,"ACL", aOfBinary2)
[ungetestete Skizze]
Grüße
Biber
... ebenso ungetestet, aber etwas an die Variableninhalte angepasst:
Grüße
bastla
' optional: Option Explicit
' Konverntionen z.B. Präfix "o" für Objekte, "str" für Strings,
' "int" für Integer, "a" für Arrays ...
Set oWmiReg = GetObject("winmgmts:root\default:StdRegProv")
Const HKLM = &H80000002
strKey = "SOFTWARE\ORL\WinVNC3"
intResult = oWmiReg.CreateKey(HKLM, strKey)
intResult = oWmiReg.SetDWORDValue(HKLM, strKey, "MSLogonRequired", 00000001)
intResult = oWmiReg.SetDWORDValue(HKLM, strKey, "NewMSLogon", 00000001)
strHexInput = "02,00,2c,00,01,00,00,00,00,00,00,00,00,00,00,05,15,00,00,00,79,e3,fc,53,16,c0,ea,32,07,e5,3b,2b,25,5e,03,00"
aOfStr = Split(strHexInput,",")
ReDim aOfBinary(UBound(aOfStr))
For i = LBound(aOfStr) To UBound(aOfStr)
aOfBinary(i) = CInt("&H" & aOfStr(i))
Next
intResult = oWmiReg.SetBinaryValue(HKLM, strKey, "ACL", aOfBinary)
Grüße
bastla