vbs语法错误:800A03EE')'预期

时间:2013-09-11 23:20:43

标签: visual-studio vba vbscript

我尝试在名为'addcurrentkey.vbs'的文件中执行此操作 但它表示')'预计在第1行。字符38。

我尝试了这个教程:http://www.codeproject.com/Articles/16569/Autorun-Applications

为什么我不能执行.vbs文件?

Private Sub AddCurrentKey(ByVal name As String, ByVal path As String)
Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True) 
key.SetValue(name, path) 
End Sub 

2 个答案:

答案 0 :(得分:3)

您发布的代码可能是用VB.net(或者VBA)编写的。您正在将代码作为VBScript运行,它不支持类型化参数和变量。它也不提供您尝试使用的注册表对象。从这个改变程序:

Private Sub AddCurrentKey(ByVal name As String, ByVal path As String)
  Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True) 
  key.SetValue(name, path) 
End Sub

到此:

Private Sub AddCurrentKey(ByVal name, ByVal path)
  Dim key : key = "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
  CreateObject("WScript.Shell").RegWrite key & "\" & name, path
End Sub

问题就会消失。

答案 1 :(得分:2)

VBScript仍然使用“旧”Visual Basic语法。这区分了表达式中使用的函数调用和作为语句的过程调用。您在表达式中使用(括号)但不在语句中使用。修正:

 key.SetValue name, path 

或者如果您愿意:

 Call key.SetValue(name, path)

错误消息很难解释,因为脚本解释器认为您正在尝试写这个:

 key.SetValue (name), path

这意味着完全不同的东西。 VBScript传递参数ByRef。 name 周围的额外括号将其转换为创建变量副本的表达式。它可以通过SetValue过程进行修改,而不会影响 name 变量。不是它实际上做的,也不是你想要的。