0

「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 
4

2 に答える 2

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

そして問題は消えます。

于 2013-09-12T06:51:18.350 に答える
2

VBScript は、「古い」Visual Basic 構文を引き続き使用します。式で使用される関数呼び出しとステートメントであるプロシージャ呼び出しを区別します。(括弧) を式で使用しますが、ステートメントでは使用しません。修理:

 key.SetValue name, path 

または、必要に応じて:

 Call key.SetValue(name, path)

スクリプト インタープリターは、ユーザーが次のように記述しようとしていると見なすため、エラー メッセージを解釈するのは困難です。

 key.SetValue (name), path

つまり、まったく違うものを意味します。VBScript は引数 ByRef を渡します。nameを括弧で囲むと、変数のコピーを作成する式になります。name変数に影響を与えることなく、SetValue プロシージャによって変更できます。それが実際に行うことでも、意図したことでもありません。

于 2013-09-12T19:33:18.440 に答える