Registry wsh binary code mit hex beschreiben
Und wieder ich!
Ich versuche die Signatur von Office via Windows Shell zu ändern.
Der Registry eintrag dort ist ein REG_Binary, ich versuche praktisch den Hexcode dort rein zu schreiben jedoch bekomme ich eine Fehlermeldung das es sich dabei um den falschen Datentyp handelt. Kann ich ja auch voll nachvollziehen da die Hexwerte (srvkey) auch Buchstaben enthält und somit ein String ist anstatt eines Binärs.
Meine Frage ist wie bekomm ich den Registryeintrag so umgewandelt das ich einen REG_Binary anlegen bzw. mit Hex beschreiben kann. ?
Danke im Vorraus
redzack
PS: Wer Rechtschreibfehler findet kann sie behalten!
Ich versuche die Signatur von Office via Windows Shell zu ändern.
Dim srvkey
srvkey = "56 00 65 00 72 00 62 00 69 00 6f 00 5f 00 6e 00 65 00 75 00 00 00"
set ws = createobject("Wscript.shell")
ws.regwrite "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002\New Signature", srvkey, "REG_BINARY"
msgbox ("Wert wurde erstellt und wird ausgelesen: " & ws.regread("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002\New Signature"))
Der Registry eintrag dort ist ein REG_Binary, ich versuche praktisch den Hexcode dort rein zu schreiben jedoch bekomme ich eine Fehlermeldung das es sich dabei um den falschen Datentyp handelt. Kann ich ja auch voll nachvollziehen da die Hexwerte (srvkey) auch Buchstaben enthält und somit ein String ist anstatt eines Binärs.
Meine Frage ist wie bekomm ich den Registryeintrag so umgewandelt das ich einen REG_Binary anlegen bzw. mit Hex beschreiben kann. ?
Danke im Vorraus
redzack
PS: Wer Rechtschreibfehler findet kann sie behalten!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132221
Url: https://administrator.de/contentid/132221
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Weil schon fast Weihnachten ist
Natürlich nur als Gerüst...
Grüße
Max
name = "#####################"
Set objAD = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objAD.UserName)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set tempfolder = fs.GetSpecialFolder(2)
tempname = fs.GetTempName
Set tempfile = tempfolder.CreateTextFile(tempname)
Public Sub WriteKey(file,key,value)
file.Write("""" & key & """=hex:")
For i=0 To (Len(value)-1)
file.Write(Hex(Asc(Mid(value,(i+1),1))) & ",00,")
Next
file.Write("00,00")
file.WriteBlankLines(1)
End Sub
' Die Felder sind REG_BINARY - das laesst sich mit VBScript nicht direkt belegen
' sondern man muss eine .reg Datei erzeugen und dann ausfuehren!
' Header
tempfile.WriteLine("Windows Registry Editor Version 5.00")
tempfile.WriteBlankLines(1)
' Office 2000
tempfile.WriteLine("[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo]")
WriteKey tempfile,"Company",name
WriteKey tempfile,"UserInitials",Left(objUser.givenName,1) & Left(objUser.lastName,1)
WriteKey tempfile,"UserName",objUser.givenName & " " & objUser.lastName
' Office XP
tempfile.WriteLine("[HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\UserInfo]")
WriteKey tempfile,"Company",name
WriteKey tempfile,"UserInitials",Left(objUser.givenName,1) & Left(objUser.lastName,1)
WriteKey tempfile,"UserName",objUser.givenName & " " & objUser.lastName
' Office 2003
tempfile.WriteLine("[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo]")
WriteKey tempfile,"Company",name
WriteKey tempfile,"UserInitials",Left(objUser.givenName,1) & Left(objUser.lastName,1)
WriteKey tempfile,"UserName",objUser.givenName & " " & objUser.lastName
' Speichern
tempfile.Close
' Ausführen
WshShell.Run("regedit.exe /s " & tempfolder.Path & "\" & tempname)
Natürlich nur als Gerüst...
Grüße
Max
Hallo redzack,
du benötigst den Wert als Array von HEX-Werten. IMHO musst du WMI bemühen, um das zu bewerkstelligen.
Ungetestet etwa so:
Grüße
rubberman
du benötigst den Wert als Array von HEX-Werten. IMHO musst du WMI bemühen, um das zu bewerkstelligen.
Ungetestet etwa so:
Const HKEY_CURRENT_USER = &H80000001
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002"
strComputer = "."
iValues = Array(&H56,&H00,&H65,&H00,&H72,&H00,&H62,&H00,&H69,&H00,&H6f,&H00,&H5f,&H00,&H6e,&H00,&H65,&H00,&H75,&H00,&H00,&H00)
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
oReg.CreateKey HKEY_CURRENT_USER, strKeyPath
BinaryValueName = "New Signature"
oReg.SetBinaryValue HKEY_CURRENT_USER,strKeyPath, BinaryValueName,iValues
Grüße
rubberman