【发布时间】:2018-06-06 22:54:58
【问题描述】:
我正在尝试使用其他用户启动 Internet Explorer 以访问需要单点登录的网站。
下面是我正在使用的代码。它不会产生任何错误,但 IE 根本不会启动,甚至进程也不会启动。
Try
System.Diagnostics.Process.Start(IExplorerPath, Username, ConvertToSecureString(Password), Domain)
Success = True
Catch ex As Exception
Success = False
Error_Message = ex.Message
End Try
我还尝试了以下变体,结果相同(无):
Try
Dim psi As New ProcessStartInfo()
psi.Filename = IExplorerPath
psi.UserName = Username
psi.Domain = Domain
psi.Password = ConvertToSecureString(Password)
psi.UseShellExecute = False
Process.Start(psi)
Success = True
Catch ex As Exception
Success = False
Error_Message = ex.Message
End Try
这是 ConvertToSecureString 函数:
Function ConvertToSecureString(ByVal str As String)
Dim password As New SecureString
For Each c As Char In str.ToCharArray
password.AppendChar(c)
Next
Return password
End Function
【问题讨论】:
-
它肯定会抛出某种错误...为什么不注释掉
Try/Catch语句并让您的调试器处理崩溃,以便您可以正确检查它? -- 另外,您是否真的检查了任务管理器并看到没有启动任何 IE 进程?我以前从未以与代码不同的用户身份启动过进程,但是如果它在他们的会话中而不是当前会话中启动怎么办?那你就看不到窗户了。尝试输入您自己的凭据,看看会发生什么。 -
测试结果: 1)注释掉 Try/Catch 会生成一个错误,指出用户名/密码不正确/未知,这很奇怪,因为我尝试手动执行(shift + 右键单击 IE 可执行文件) 并且它确实有效。 2)是的,我检查了任务管理器那里什么都没有。 3) 我使用了我的凭据,它确实有效。
-
如果是这种情况(它正在他们的会话中启动),我应该在我的代码中进行哪些更改以使其显示在当前代码中?
-
ConvertToSecureString中可能有错误。 -
如果是这种情况,我的凭据应该会出错。我也将该函数用于其他脚本
标签: vb.net internet-explorer impersonation runas