繁体   English   中英

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

[英]vbs syntax error: 800A03EE ')' expected

我尝试在名为“ 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 

您发布的代码可能是用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

问题就会消失。

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

 key.SetValue name, path 

或者,如果您愿意:

 Call key.SetValue(name, path)

该错误消息很难解释,因为脚本解释器认为您正在尝试编写以下代码:

 key.SetValue (name), path

这意味着完全不同的东西。 VBScript传递参数ByRef。 名称周围多余的括号将其转换为创建变量副本的表达式。 可以通过SetValue过程对其进行修改,而不会影响name变量。 不是它的实际作用,也不是您的意图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM