このコードを読んで、間違っている場所に教えてもらえますか?セカンダリスタートページを設定しようとすると "subscript out of range"エラーが発生する
私は、IEホームページのセカンダリスタートページのHKCU MultiStringValueを読んでおり、ユーザのプリセットを残りの値として保持しながら、リスト内の最初の項目として自分自身を強制しています。
でも、私は私のURLとユーザーの設定、すべての組み合わせ戻ってくるがある場合、スクリプトは正常に実行されますが、私はONLY鉱山が設定されている場合は、allURLs
が範囲
外のエラー
添字をスローします強制URLを
allURLs(0)
に配置していますが、空ではなく、先頭に正しく初期化されています。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
Ansgarさん、ありがとうございます、私は変更し、結果を返信します。 – NYPkgFellos
申し訳ありませんでしたので、すべてのロジックを改善した変更を加えました.Dim allURLs()をDim allURLS(0)に変更し、UBound.Nowで上に転記した変更を「この配列は固定です。 ReDim Preserve allURLs(UBound(allURLs)+1)」行に一時的にロックされています。現在、私は自分自身、msnとgetvalue行から戻ってくるGoogleを持っています。ありがとう。 – NYPkgFellos
'Dim allURLs(0)'ではなく 'ReDim allURLs(0)'です。後者は、固定サイズの配列を作成します。 –