c# – 我的Selenium IE实例未加载非管理员用户

前端之家收集整理的这篇文章主要介绍了c# – 我的Selenium IE实例未加载非管理员用户前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在C#中编写了一个应用程序来自动登录到网页.

只要Admin运行可执行文件,它就能完美运行.每当非管理员运行项目时,就好像IEDriver.exe没有启动一样.从组策略启动IEDriver.exe没有任何限制.

private IWebDriver _driver;

public void SetUp()
{
        InternetExplorerOptions options = new InternetExplorerOptions();
        options.EnsureCleanSession = true;
        options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
        options.RequireWindowFocus = true;
        options.EnablePersistentHover = false;

        var service = InternetExplorerDriverService.CreateDefaultService();
        service.LibraryExtractionPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
        //service.HideCommandPromptWindow = true;

        _driver = new InternetExplorerDriver(service,options);
}

当我取消注释LibraryExtractionPath时,IEDriver不会启动.

当我调试代码.

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

指向正确的位置

D:\PathToFolder\Project1\bin\Debug\

我认为问题是客户端(非管理员)无法启动IEDriver.exe

更新:Internet Explorer的保护模式未禁用,which can prevent running IE Driver as a non-admin user.我可以使用C#代码和IE服务选项禁用它吗?

解决方法

从你提供的路径的外观

D:\PathToFolder\Project1\bin\Debug\

您正尝试从Visual Studio编译的位置运行驱动程序.有几个原因可能导致这种情况无效.

当您在visual studio中设置和编译代码时,它将创建调试文件夹ect并使用当前用户的权限.这意味着该用户管理员可以访问它但不能访问其他人.或者,如果这是作为管理员完成的,则只有管理员才能访问.

安静的Visual Studio和其他IDE也会有不同的工作目录,并根据您选择的构建选项将exe编译到不同的目录中.例如发布与调试.这意味着exe使用的dll与exe不同.当你在visual studio里面运行时,这不是一个问题,因为它设置了正确的工作目录并为你排序.在你的情况下,如果这是问题的一部分,它可能不是那么简单.它可能意味着任何必需的DLL都可以安装在管理员的路径中,但不适用于普通用户.

这可能是一个路径或权限问题.我建议使用像Dependency walker这样的东西来查看exe的内容http://www.dependencywalker.com/并确保所有用户都可以访问它们.

如果您作为用户执行此操作,该程序不适用于依赖性walker将显示未找到哪些依赖项.

猜你在找的C#相关文章