senseless-creature
Goto Top

VBScript soll Registryeintrag auslesen und ändern

Guten Abend, ich suche nach einer Lösung, den Registry-Eintrag "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows" per VBScript soweit anzupassen, daß dort in der Zeichenfolge die Werte für "SharedSection=1024,20480,1024" eingesetzt werden sollen. Der Rest der Zeichenfolge soll dabei aber erhalten bleiben. Mit "WSHShell.RegWrite" alleine komme ich an dieser Stelle nicht weiter, weil sich die Zeichenfolge "%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,1024 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16" für Windows 10 hier an der Stelle von der Zeichenfolge von anderen Windows-Versionen unterscheidet.
Von Microsoft gab es dazu wohl mal einen Easy-Fix, doch der ist nicht mehr über die offizielle Seite zu beziehen..
Link
Ich bin für jeden Tipp dankbar.

MfG

Content-ID: 429638

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

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

rubberman
Lösung rubberman 18.03.2019 um 12:11:35 Uhr
Goto Top
Definiere doch mal bitte die Regel für das Einfügen. So wie ich das im Moment sehe, könnte die Regel lauten, "füge die Zeichenkette nach dem 2 Leerzeichen in der ursprünglichen Zeichenkette ein". Ist aber nur meine Annahme.

Steffen
Senseless-Creature
Senseless-Creature 18.03.2019 um 12:32:17 Uhr
Goto Top
Ich weiß nicht, ob das bei allen Windowsversionen bis zu dem Punkt identisch ist. Könnte man auch nach der Zeichenfolge: "SharedSection=" innerhalb der Abfolge suchen und dort ersetzen?
vielleicht sowas wie - Regread"HKLM…"
for each "SharedSection" in Zeichenfolge
Put SharedSection = text & "SharedSection=1024,20480,1024" & restlicher text
Ich bin noch ein ziemlicher Anfänger in VBScript..

Ich komme hier einfach nicht weiter und google hilft mir da auch nicht..
rubberman
Lösung rubberman 18.03.2019 um 12:56:05 Uhr
Goto Top
Okay, dann habe ich das erst mal falsch verstanden. SharedSection existiert also in jedem Fall, nur die Werte sollen ersetzt werden. Sollte mit Regex machbar sein. Ich schau mir das mal an wenn ich zu Hause bin.

Steffen
138810
Lösung 138810 18.03.2019 aktualisiert um 13:41:19 Uhr
Goto Top
Regex ist wie immer dein Freund bei solchen Aktionen:
' REG Key definieren  
Const KEY = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows"  
'Variablen deklarieren  
dim objShell, regex, str
' Objekte deklarieren  
Set objShell = CreateObject("Wscript.Shell")  
Set regex = CreateObject("vbscript.regexp")  
' Ignoriere Groß- und Kleinschreibung im Pattern  
regex.IgnoreCase = True
' Regex Pattern definieren  
regex.Pattern = "(SharedSection)=(\d+),(\d+),(\d+)"  
' Lese Wert aus der Registry in eine Variable  
str = objShell.RegRead (KEY)
' Führe den Regex-Replace durch  
str = regex.Replace(str,"$1=$2,$3,2048") 'hier passend Werte einsetzen, die "$n" sind die geklammerten Submatches des Regex-Pattern  
' schreibe den geänderten Wert wieder zurück in die Registry  
objShell.RegWrite KEY,str,"REG_EXPAND_SZ"  
Senseless-Creature
Senseless-Creature 18.03.2019 um 20:16:28 Uhr
Goto Top
WOW, das ging schnell - das Skript macht genau das, was ich brauche - PERFEKT.
Vielen Dank dafür face-smile

MfG