0

変数を使用してデータベースのユーザー名とパスワードをパスワードで保護されたプログラムに保存し、それらをパラメーターとして渡し、データベースに情報を送信する引数として VBScript で使用しようとしています。これにより、データベースを保護しているユーザー名とパスワードがユーザーに表示されなくなり、改ざんが可能になります。

VBScript にユーザー名とパスワードがある場合、問題なく動作します。

strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=JoeSmith;Password=twinkles324"

しかし、それらをパラメーターとして VBScript に送信し、それらを引数として受け入れて接続しようとすると、「ユーザー 'ユーザー名' のログインに失敗しました」という 80040E4D エラーが表示されます。

Dim Arg, conn, strConnect, Data1, Data2, Data3, Data4
Set Arg = WScript.Arguments
Username = Arg.Item(0)
Pswrd = Arg.Item(1)

Set conn = CreateObject("ADODB.Connection")

strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=Username;Password=Pswrd"
conn.Open strConnect

strSQL = "INSERT INTO MyTable (Data1, Data2, Data3, Data4)" VALUES ('" & Data1 & "', '" & Data2 & "', '" & Data3 & "', '" & Data4 & "')

conn.Execute strSQL

conn.Close
strSQL = ""

変数を使用してデータベースに接続できない理由を理解してくれる人はいますか?

4

1 に答える 1

1

VBScript は変数名の文字列リテラルをスキャンしません。文字列リテラルの外に置く必要があります。

strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=" & Username & ";Password=" & Pswrd

それ以外の場合は、文字通りのユーザー名でログインしようとしています&Username

于 2013-10-18T13:08:05.700 に答える