我们有一个场景,我们需要我们的用户能够启动 SQLServer 并使用与当前登录不同的域对其进行身份验证。因此,为了澄清这是设置的方式:
- 用户到达办公室并登录公司域(为简单起见,我们将其称为 LOCALDOMAIN)
- 他们希望连接到我们在不同域上的远程数据库(我们称之为 REMOTEDOMAIN)
- 首先,他们启动了 VPN 工具,该工具建立了到 REMOTEDOMAIN 的 VPN 隧道(这一切都经过测试并且效果很好)
- 但是,如果他们默认启动 SSMS,它将只允许通过 LOCALDOMAIN 进行 Windows 身份验证,选择 REMOTEDOMAIN 的选项甚至不可用
我们发现从命令行运行它会起作用:
RUNAS /user:REMOTEDOMAIN\AUserName /netonly "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe
它将提示“输入 REMOTEDOMAIN\AUserName 的密码:”消息,如果您提供正确的密码,SSMS 将启动并可以连接到远程数据库。但是,当我尝试在 C# 中使用更好的界面做同样的事情时,我得到“登录失败:未知用户名或密码错误”,这是我的代码:
System.Security.SecureString password = new System.Security.SecureString();
foreach(char c in txtPassword.Text.ToCharArray()){
password.AppendChar(c);
}
System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo();
procInfo.Arguments = "/netonly";
procInfo.FileName = @"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"; ;
procInfo.Domain = "REMOTEDOMAIN";
procInfo.Verb = "runas";
procInfo.UserName = txtUsername.Text;
procInfo.Password = password;
procInfo.UseShellExecute = false;
System.Diagnostics.Process.Start(procInfo);
我尝试了带有和不带有预先挂起的域的用户名,但都不起作用。有人尝试过做类似的事情吗?谢谢