18. oktober 2004 - 11:15
Der er
4 kommentarer og
1 løsning
Ændre Binary Value key i regdb.
jeg har en Binary Value key som hedder DaylightStart, hvis man eksportere dens indhold til en .reg fil, ser den sådan her ud:
DaylightStart"=hex:00,00,03,00,05,00,02,00,00,00,00,00,00,00,00,00
Jeg kunne godt tænke mig at ændre den værdi til en anden, f.eks. 00,00,0a,00,05,00,03,00,00,00,00,00,00,00,00,00
Det nytter ikke at bruge dword eller string, da det som sagt er en "Binary Value"
Så hvordan ændrer man den gamle værdi til den nye værdi eller kan man slette hele den gamle key og indsætte en ny hvor den nye værdi er i?
Den er så vidt jeg kan se ret tricky, så der rives lidt mange point efter dem som har nogle gode svar :)
Og det SKAL være via et vbscript, da det her script skal køres før en bruger logger sig på en maskine.
18. oktober 2004 - 15:37
#1
Følgende script ændrer eller opretter en binær værdi i registreringsdb.
Håber det er det du skal bruge. Du kan bare forlænge uBinary så det kommer til at passe med det du gerne vil indsætte.
Const HKEY_CURRENT_USER = &H80000001
const HKEY_LOCAL_MACHINE = &H80000002
Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
strValueName = "MyBinaryNamedValue"
uBinary = Array(3,2,3,6,6,6,7,8)
Return = objRegistry.SetBinaryValue(HKEY_LOCAL_MACHINE,strKeyPath, strValueName,uBinary)
If (Return = 0) And (Err.Number = 0) Then
msgbox "Binary value added successfully"
Else
msgbox "err"
End If
19. oktober 2004 - 10:15
#3
Det ser faktisk ud til at virke, har dog et lille sidste problem, som sikkert et simpelt, men nu er det også tideligt på dagen :)
Mit vbscript ser sådan her ud nu:
"
'Set TimeZone to GMT(+1)
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Control\TimeZoneInformation"
strEntryName = "ActiveTimeBias"
dwValue = 4294967176
objReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, dwValue
strEntryName = "Bias"
dwValue = 4294967236
objReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, dwValue
strEntryName = "DaylightBias"
dwValue = 4294967236
objReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, dwValue
strEntryName = "DaylightName"
strValue = "Romance Daylight Time"
objReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, strValue
strEntryName = "StandardBias"
dwValue = 0
objReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, dwValue
strEntryName = "StandardName"
strValue = "Romance Daylight Time"
objReg.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, strValue
set objReg = nothing
Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Control\TimeZoneInformation"
strValueName = "DaylightStart"
uBinary = Array(00,00,03,00,05,00,02,00,00,00,00,00,00,00,00,00)
Return = objRegistry.SetBinaryValue(HKEY_LOCAL_MACHINE,strKeyPath, strValueName,uBinary)
set objRegistry = nothing
"
Og den ændrer også fint DaylightStart osv og det andet, men jeg vil gerne have den til at ændre endnu en binær værdi: "StandardStart"=hex:00,00,0a,00,05,00,03,00,00,00,00,00,00,00,00,00
Har prøvet at smide følgende på:
Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Control\TimeZoneInformation"
strValueName = "StandardStart"
uBinary = Array(00,00,0a,00,05,00,03,00,00,00,00,00,00,00,00,00)
Return = objRegistry.SetBinaryValue(HKEY_LOCAL_MACHINE,strKeyPath, strValueName,uBinary)
set objRegistry = nothing
Men det går ikke og så siger den at den forventer et ) i uBinary linien, så prøvede jeg at smide den i sit egen script, og får samme fejl og fejlen opstår lige før 0a ... Er der noget specielt der??