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); 指向正确的位置
我认为问题是客户端(非管理员)无法启动IEDriver.exe 更新:Internet Explorer的保护模式未禁用,which can prevent running IE Driver as a non-admin user.我可以使用C#代码和IE服务选项禁用它吗? 解决方法
从你提供的路径的外观
您正尝试从Visual Studio编译的位置运行驱动程序.有几个原因可能导致这种情况无效. 当您在visual studio中设置和编译代码时,它将创建调试文件夹ect并使用当前用户的权限.这意味着该用户和管理员可以访问它但不能访问其他人.或者,如果这是作为管理员完成的,则只有管理员才能访问. 安静的Visual Studio和其他IDE也会有不同的工作目录,并根据您选择的构建选项将exe编译到不同的目录中.例如发布与调试.这意味着exe使用的dll与exe不同.当你在visual studio里面运行时,这不是一个问题,因为它设置了正确的工作目录并为你排序.在你的情况下,如果这是问题的一部分,它可能不是那么简单.它可能意味着任何必需的DLL都可以安装在管理员的路径中,但不适用于普通用户. 这可能是一个路径或权限问题.我建议使用像Dependency walker这样的东西来查看exe的内容:http://www.dependencywalker.com/并确保所有用户都可以访问它们. 如果您作为用户执行此操作,该程序不适用于依赖性walker将显示未找到哪些依赖项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |