我尝试在名为'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
答案 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 变量。不是它实际上做的,也不是你想要的。