代码之家  ›  专栏  ›  技术社区  ›  Jon Koeter

C:将watin.core用于另一个用户(processStartInfo),IIS返回未授权

  •  1
  • Jon Koeter  · 技术社区  · 14 年前

    我的情况:

    我正在运行一个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不支持此功能…但这不是问题的一部分)

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jon Koeter    14 年前

    psi.loadUserProfile=true;是正确的答案。看来我们家里有个专业人士:)谢谢基恩司令!