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"。这应该会导致 Windows 提示输入用户名/密码来运行。不过,这可能会限制他们与其他应用程序交互的访问权限。

于 2012-06-25T11:07:17.213 回答