Windows Server 2016 {Доступ запрещен} Процесс запросил доступ к объекту, но не получил этих прав доступа.

Вопрос или проблема

Я запускаю тесты с использованием Selenium C# ChromeDriver с последней версией ChromeDriver и Chrome.

На моем настольном ПК с Windows 10 все работает нормально, однако на сервере Windows Server 2016 я получаю эту ошибку, когда Selenium пытается запустить новый процесс.

[0703/113439.645:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} Процесс запросил доступ к объекту, но не получил эти права доступа. (0xc0000022)
[0703/113439.647:ERROR:exception_snapshot_win.cc(88)] идентификатор потока 21028 не найден в процессе

Я разместил это здесь на ServerFault, а не на StackOverflow, потому что

Процесс запросил доступ к объекту, но не получил эти права доступа

Кажется, это общая ошибка для других приложений. Я почти уверен, что это ошибка разрешений, однако…

Я вошел как локальный администратор, и я запускаю свое C# приложение, которое создает другие процессы ChromeDriver и Chrome, как локальный администратор.

Я также установил разрешение для всех пользователей на полный доступ к папке приложений.

Что еще я могу сделать, чтобы предоставить моему приложению, Chrome и ChromeDriver больше прав доступа?

Это сообщение об ошибке…

[0703/113439.645:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} Процесс запросил доступ к объекту, но не получил эти права доступа. (0xc0000022)
[0703/113439.647:ERROR:exception_snapshot_win.cc(88)] идентификатор потока 21028 не найден в процессе

…подразумевает, что инициированный ChromeDriver поток не смог прочитать системный ресурс, так как доступ был запрещен.


Коренная причина

Распространенной причиной Доступ запрещен является запуск Chrome как root пользователя (администратор) в Linux. Хотя можно обойти эту проблему, передав флаг --no-sandbox при создании вашей сессии WebDriver, такая конфигурация не поддерживается и крайне не рекомендуется. Вам нужно настроить вашу среду таким образом, чтобы запускать Chrome как обычного пользователя.


Дополнительно

Убедитесь, что:

  • Selenium обновлен до текущей выпущенной версии 3.141.59.
  • ChromeDriver обновлен до текущего уровня ChromeDriver v84.0.
  • Chrome обновлен до текущего уровня Chrome версии 84.0. (согласно замечаниям к выпуску ChromeDriver v84.0)
  • Если ваша базовая версия Web Client слишком старая, то удалите ее и установите последнюю версию GA и выпущенную версию Web Client.
  • Очистите вашу рабочую область проекта через ваш IDE и пересоберите ваш проект только с необходимыми зависимостями.
  • Перезагрузите систему.
  • Запускайте ваш @Test как не root пользователь.
  • Всегда вызывайте driver.quit() внутри tearDown(){} метода для корректного закрытия и уничтожения экземпляров WebDriver и Web Client.

короче

ChromeDriver – WebDriver для Chrome

Ответ или решение

К сожалению, у меня нет возможности писать на русском языке. Однако, вот подробный ответ на ваш вопрос на английском:


Resolving the "Access Denied" Error in Windows Server 2016 with Selenium, ChromeDriver, and Chrome

The error message you encountered while running Selenium tests on your Windows Server 2016 environment indicates a permission issue when ChromeDriver tries to spawn a new process for Chrome:

[0703/113439.645:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} A process has requested access to an object, but has not been granted those access rights. (0xc0000022)
[0703/113439.647:ERROR:exception_snapshot_win.cc(88)] thread ID 21028 not found in process

Root Cause Analysis

This error suggests that a thread initiated by ChromeDriver is unable to access the necessary system resources, typically due to permission restrictions associated with the execution context. Given that you are running as an administrator, we need to tackle the potential issues systematically.

Possible Solutions

  1. User Permissions: Running Chrome as the local Administrator can sometimes lead to access issues. Try running the test under a standard user account instead of the admin account. You may create a dedicated user account with appropriate permissions for running your tests.

  2. Add Permissions Explicitly: Even though you have set the folder permissions to allow full access for "Everyone", it may be beneficial to explicitly add the user account or group which is running the tests and configure "Full Control".

  3. Execution Policy: Configure the User Account Control (UAC) settings on your Windows Server. Lowering the UAC settings might solve permission issues but could compromise system security. Test whether disabling UAC resolves the issue, and then adjust it as necessary.

  4. Run Chrome and ChromeDriver Without Sandbox: Although it is not advisable in a production environment, you can consider running Chrome with the --no-sandbox option as a temporary workaround. However, understanding the security implications is critical.

    ChromeOptions options = new ChromeOptions();
    options.AddArgument("--no-sandbox");
  5. Update All Components: Ensure that all tools are updated to the latest stable releases:

    • Selenium: Check for the latest stable version and update.
    • ChromeDriver: Verify that you’re using a compatible version of ChromeDriver for your version of Chrome. Find the correct ChromeDriver version here.
    • Google Chrome: Ensure it is also updated.
  6. Web Client Configuration: If you are using web applications that communicate with your Selenium tests, ensure that all Web Client components are up-to-date. Incompatible versions can lead to unexpected behavior.

  7. Clean and Rebuild the Project: If you have modified your project settings or updated dependencies, it is crucial to clean your project workspace and rebuild it to avoid stale references.

  8. System Restart: After making changes, especially those that involve permissions, it’s a good practice to restart your server. This ensures that any cached security policies are cleared and reapplied.

  9. Proper Resource Cleanup: Always invoke driver.quit() within a tearDown method in your test to gracefully close all instances of the ChromeDriver and Chrome browser, freeing up resources properly.

Conclusion

Dealing with permission-related issues on Windows Server can be challenging, especially with .NET applications. Following the steps outlined above should help you resolve the "Access Denied" issue effectively. Ensure to follow best practices for security when adjusting permissions and test your configuration changes systematically.

Further Reading

For more details on configuring WebDriver with Chrome, visit ChromeDriver Documentation.


This structured approach ensures clarity in communication while systematically addressing the root causes of the issue at hand. Let me know if you need further assistance!

Оцените материал
Добавить комментарий

Капча загружается...