VisualBasic Registry-Eintrag ändern!

clorky

Cadet 3rd Year
Registriert
Dez. 2007
Beiträge
35
Liebe Community,

folgendes Problem: Ich möchte einen Wert in der Registry ändern (= REG_DWORD). Derzeit bin ich soweit, dass er IMMER in den ELSE-Part Springt, also die Abfrage falsch ist. Werte hab ich geprüft, müsste stimmen.

Meine Vermutung ist, dass er nen String auslesen möchte...kenne aber dummerweise die entsp. Funktion für der Auslesen des DWORD-Wertes nicht. Bitte um Hilfe!

Script bis hierhin:

Code:
Const HKEY_LOCAL_MACHINE = &H80000002

strComputername = "."
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputername & "\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strValue = "TcpWindowSize"
oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValue, str_winsize
If UCase(str_winsize) = "001f4000" Then
oReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValue, "00000800"
ELSE
oReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValue, "001f4000"
End if
 
du frägst hier nach UpperCase, die atomare Teilbedingung ist aber in lower case geschrieben
Code:
If UCase(str_winsize) = "001f4000" Then

besser

Code:
If UCase(str_winsize) = "001F4000" Then

Und ich sehe dein Code is nicht ganz sauber mit den IF's und so :)
Du solltest einen Code-Editor mit IntelliSense nehmen der dir die statements automatisch
vervollständig.
Da gibts z.B. SciTE, PSPad...
 
Soa, habs nu hinbekommen (einfacher als erwartet =D)

Code:
Const HKEY_LOCAL_MACHINE = &H80000002

strComputername = "."
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputername & "\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
strValue = "TcpWindowSize"

oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValue, dw_winsize
If dw_winsize = 2048 THEN
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValue, 2097152
ELSE
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValue, 2048
END IF





dim OpSysSet, obj
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
"(Shutdown)}//./root/cimv2").ExecQuery _
("SELECT * FROM Win32_OperatingSystem" &_
" WHERE Primary=true")

For Each obj In OpSysSet
obj.Win32Shutdown(2)
Next

Das Script wechselt nun bei jeder Ausführung zwischen dem Wert 2048 und 2097152 und startet anschließend den PC neu, damit dei Änderungen wirksam werden.

MFG
 
glaubst ein Neustart is notwendig? Vielleicht reicht schon das de-/reaktivieren der Netzwerkverbindung?

shutdown geht auch über dos, is 3 zeiler :D gerade WMI Selects können langsam werden

Code:
set wshell = CreateObject("WScript.Shell") 
wshell.run "shutdown -r -t 10" 'reboot with 10 seconds warning
wshell = nothing

nur so mal als alternative :D
 
Also der Neustart macht keine Probleme, geht schnell von Hand.

Obs reicht, die Netzwerkkarte zu Deaktivieren und wieder zu aktivieren ist derzeit in Prüfung =)
Ist halt nur schwierig, irgendwelche Auswirkungen des TCPRWINs zu finden
 
Zurück
Oben