Können Sie bitte diesen Code lesen und lassen Sie mich, wo ich falsch liege?"Subscript out of range" -Fehler beim Versuch, die sekundäre Startseite zu setzen
Für einen schnellen Überblick lese ich ein HKCU MultiStringValue für sekundäre Startseiten für IE-Homepages und erzwinge meine eigene als erstes Element in der Liste, während die Benutzervoreinstellungen als Rest der Werte beibehalten.
Wenn ich meine URL und Benutzer-Preset alle kombiniert zurück kommen, Skript läuft gut, aber wenn ich nur mein Set haben, die allURLs
wirft einen Fehler
Index außerhalb des zulässigen Bereichs
sogar Obwohl ich meine erzwungene URL in allURLs(0)
platziere, ist sie nicht leer und oben richtig initialisiert.
Option Explicit
Dim ObjName, oADSysInfo, strComputer
Dim objReg, IE_Main, mstrValName, strFunctionIntranet, strNYHomepage, _
multiStringValues(), allURLs(), itemname, a, return
Set oADSysInfo = CreateObject("ADSystemInfo")
Set ObjName = GetObject("LDAP://" & oADSysInfo.UserName)
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
Const HKCU = &H80000001
IE_Main = "Software\Microsoft\Internet Explorer\Main"
mstrValName = "Secondary Start Pages"
strNYHomepage = "http://www.google.com"
strFunctionIntranet = "www.mycompany.com"
SetHomePage
Sub SetHomepage
objReg.setStringValue HKCU, IE_Main, "Start Page", strNYHomepage
'Reading MultiStringValue of "Secondary Start Pages" for HKCU
'and continuing if it has something preset.
return = objReg.getMultiStringValue(HKCU, IE_Main, mstrValName, multiStringValues)
If return = 0 Then
a = 0
'Reading all items currently set to make sure users retain
'their existing URLs.
For Each itemname In multiStringValues
'Only continue if any of the existing URLs DO NOT MATCH
'what we are enforcing as the URL.
If itemname <> strFunctionIntranet Then
WScript.Echo itemname
WScript.Echo "itemname is NOT equal intranet"
a = a + 1
ReDim Preserve allURLs(a)
allURLs(a) = itemname
'a = a + 1
End If
Next
objReg.DeleteValue HKCU,IE_Main,mstrValName
'Enforce our URL to always be the first item.
allURLs(0) = strFunctionIntranet '<<< This is the ERROR
'Set the new MultiStringValue registry key back.
objReg.setMultiStringValue HKCU, IE_Main, mstrValName, allURLs
WScript.echo "finished setting all secondary tabs... "
Else
strFunctionIntranet = Array(strFunctionIntranet)
objReg.setMultiStringValue HKCU, IE_Main, mstrValName, strFunctionIntranet
End If
End Sub
Wscript.Quit
Danke Ansgar, ich werde ändern und werde mein Ergebnis zurückgeben. – NYPkgFellos
Okay, also habe ich die Änderungen vorgenommen, die die Logik alle zusammen verbessert haben. Ich habe die Dim allURLs() auf Dim allURLS (0) oben geändert und die oben gemachten Änderungen mit UBound gemacht. Nun wurde der Fehler auf "Dieses Array ist behoben oder temporär gesperrt "at line" ReDim Preserve allURLs (UBound (allURLs) +1) ". Momentan habe ich meine eigene, msn und google kommen von getvalue zurück. Vielen Dank. – NYPkgFellos
Es ist 'ReDim allURLs (0)', nicht 'Dim allURLs (0)'. Letzteres würde ein Array fester Größe erzeugen. –