VBScript по-прежнему использует «старый» синтаксис Visual Basic. Что отличает вызовы функций, используемые в выражениях и процедурных вызовах, которые являются операторами. Вы используете (круглые скобки) в выражении, но не в инструкции. Fix:
key.SetValue name, path
Или если вы предпочитаете:
Call key.SetValue(name, path)
Сообщение об ошибке трудно интерпретировать, потому что интерпретатор сценария считает, что вы пытаетесь написать это:
key.SetValue (name), path
Это означает что-то совершенно другое. VBScript передает аргументы ByRef. Дополнительные круглые скобки вокруг имени превращают его в выражение, которое создает копию переменной. Он может быть изменен с помощью процедуры SetValue, не влияя на переменную name . Не то, что он на самом деле делает, и то, что вы намеревались.