我的情况:
我正在运行一个C测试程序,它允许我配置特定的浏览器“步骤”,比如转到一个URL或单击一个按钮。还可以输入域、用户名和密码。运行程序时,它将使用(如果输入)用户名和密码调用另一个程序*。这个新程序将运行Internet Explorer(通过watin)并执行“步骤”。
这里的问题是,当我访问一个需要某个用户的URL时,它会告诉我“您无权查看此页面”。当我用同一个用户手动(Internet Explorer-运行方式)登录(并且我多次检查了凭据)时,它会给我很好的授权。
我已经准备好了测试:当运行本地主机页面(将显示当前用户)时,我通过程序手动和自动获得授权。
噢和:当我不配置凭证时,程序运行良好
(将跳过if语句)
我用来启动第二个程序的代码:
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
if (!string.IsNullOrEmpty(Username))
{
System.Security.SecureString secPw = new System.Security.SecureString();
foreach (char c in Password)
{
secPw.AppendChar(c);
}
psi.UserName = Username;
psi.Password = secPw;
psi.Domain = Domain;
}
psi.WorkingDirectory = "c:\\temp";
psi.FileName = Path.Combine("c:\\temp", fileName);
psi.Arguments = xmlStepFilename;
psi.UseShellExecute = false;
psi.EnvironmentVariables["TMP"] = "c:\\temp";
var process = new System.Diagnostics.Process();
process.StartInfo = psi;
process.Start();
谢谢你抽出时间来!
(*新程序已实现,因为Internet Explorer将始终在初始应用程序启动时使用的用户下运行,而且似乎无法使用其他用户名/密码运行Internet Explorer,因为Watin不支持此功能…但这不是问题的一部分)