3

さまざまなユーザーのアカウントで実行されていた古いVB6アプリケーションがあります。複数のユーザーが自動的にログインする同じアカウントを使用する「パブリック」マシンに移動する必要がありました。

公式の Windows 認証フォームをポップアップし、ユーザーに資格情報を入力してもらい、ステータスの天気を返す方法はありますか?

ユーザーが自分で作成したフォームにユーザー名/パスワードを入力し、添付のコードを使用して認証を検証することができます。問題は、これがそもそも大ざっぱに見えることであり、ユーザーのパスワードに潜在的にアクセスしたくないということです。

ユーザーの認証に使用できるコードは次のとおりです。

on error resume next
strUserName = "username"
strPassword = "password"
strADsPath = "WinNT://domainname"
iFlags = "0"

' bind to the ADSI object and authenticate Username and password 
Set oADsObject = GetObject(strADsPath)
strADsNamespace = left(strADsPath, instr(strADsPath, ":"))

set oADsNamespace = GetObject(strADsNamespace)
Set oADsObject = oADsNamespace.OpenDSObject(strADsPath, "domainname\" & strUserName, strPassword, 0)

If not (Err.number = 0) Then
    MsgBox(strUserName + " Failed.")
Else
    MsgBox(strUserName + " Authenticated.")
End If

私は次のようなことを望んでいます:

if (AuthenticateUser() <> true)
    MsgBox(strUserName + " Failed.")
Else
    MsgBox(strUserName + " Authenticated.")
End If
4

1 に答える 1

2

ShellExecute()主なものと"runas"動詞/操作を実行するだけの小さなスタブ実行可能ファイルを試すことができます。これにより、ウィンドウは実行するユーザー名/パスワードの入力を求めます。ただし、これにより、他のアプリケーションとやり取りするアクセスが制限される場合があります。

于 2012-06-25T11:07:17.213 に答える