redzack
Goto Top

Registry wsh binary code mit hex beschreiben

Und wieder ich!

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!

Content-ID: 132221

Url: https://administrator.de/contentid/132221

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

dog
dog 23.12.2009 um 17:01:11 Uhr
Goto Top
Du kannst REG_BINARY nicht direkt aus VBScript bearbeiten.
Du musst hier den Umweg gehen und eine .reg Datei schreiben und ausführen.

Grüße

Max
redzack
redzack 23.12.2009 um 17:19:36 Uhr
Goto Top
Hi

kannst du mir vielleicht ein Beispiel geben wie ich das umsetzen könnte?

danke
lg
red
dog
dog 23.12.2009 um 17:25:40 Uhr
Goto Top
Weil schon fast Weihnachten ist face-wink

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
rubberman
rubberman 23.12.2009 um 17:29:40 Uhr
Goto Top
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:
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
redzack
redzack 23.12.2009 um 18:24:07 Uhr
Goto Top
vielen Dank an euch ;)
Wünsche noch frohe Weihnachtsfeiertage.

lg
redzack