윈도우 세션과 LoginToConsole 옵션

UiPath 로봇이 동작하는 운영체제인 마이크로소프트 윈도우에는 콘솔이라는 개념이 있습니다. 원격에서 접속할 때 사용하는 remote desktop과 대비되는 개념으로, 콘솔 세션은 한 번에 하나만 존재할 수 있습니다. 윈도우 서버의 경우 동시에 여러 개의 remote desktop (RDP) 세션이 존재할 수 있는 것과 대비됩니다.

Unattended 로봇을 구동할 때 지정할 수 있는 옵션 중에 LoginToConsole이라는 옵션이 있습니다. 로봇 PC의 로컬 설정에도 - C:\ProgramData\UiPath\UiPath.settings - 존재하고, 오케스트레이터에서도 각 로봇마다 지정해줄 수 있습니다. 두 곳의 설정값이 다른 경우 오케스트레이터의 설정값이 우선합니다. 로봇 PC의 윈도우 버전이 데스크탑인지 서버인지에 따라, 그리고 이 옵션의 설정값에 따라 로봇이 구동될 때 윈도우 세션과 상호작용이 달라집니다.

로봇이 데스크탑 버전의 윈도우에서 구동되는 경우 (윈도우 7/8/10)

이 경우에는 다른 사용자의 active 세션이 이미 존재하면 로봇을 구동할 수 없습니다. 아래와 같은 에러가 발생하게 됩니다.

Could not start executor. The requested resource is in use. (Exception from HRESULT: 0x800700AA)

데스크탑 버전의 윈도우에서는 한 번에 하나의 active 세션만 존재할 수 있기 때문입니다. 모든 경우에 대하여 정리하면 아래와 같습니다. (윈도우 10에서 확인한 결과입니다.)

LoginToConsole = Yes LoginToConsole = No
active 세션이 없는 경우 로봇이 콘솔 세션에 로그인하여 구동하고 작업 종료 후 세션을 닫음 로봇이 RDP 세션에 로그인하여 구동하고 작업 중료 후 세션을 닫음
동일한 사용자가 active 콘솔 세션을 가지고 있는 경우 로봇이 이미 존재하는 콘솔 세션에서 구동됨 로봇이 이미 존재하는 콘솔 세션에서 구동됨
동일한 사용자가 active RDP 세션을 가지고 있는 경우 로봇이 이미 존재하는 RDP 세션을 콘솔 세션으로 변경한 후 구동됨 (RDP 창은 닫히게 됨) 로봇이 이미 존재하는 RDP 세션에서 구동됨
다른 사용자가 active 콘솔 세션을 가지고 있는 경우 오류 발생
Could not start executor. The requested resource is in use. (Exception from HRESULT: 0x800700AA)
오류 발생
Could not start executor. The requested resource is in use. (Exception from HRESULT: 0x800700AA)
다른 사용자가 active RDP 세션을 가지고 있는 경우 다른 사용자의 세션 연결을 끊고 접속할 것인지 물어봄.
콘솔: Another user is signed in. If you continue, they’ll be disconnected. Do you want to sign in anyway? (YES라고 응답하면)
RDP: Do you want to allow Machine\User to connect to this machine? Click OK to disconnect your session immediately or click Cancel to stay connected. No action will disconnect your session in 30 seconds.
오류 발생
Could not start executor. A specified logon session does not exist. It may already have been terminated. (Exception from HRESULT: 0x80070520)

로봇이 서버 버전의 윈도우에서 구동되는 경우

이 경우에는 다른 사용자가 콘솔 세션을 점유하고 있을 경우에만 문제가 발생합니다. 모든 경우에 대하여 정리하면 아래와 같습니다. (윈도우 서버 2016에서 확인한 결과입니다.)

LoginToConsole = Yes LoginToConsole = No
active 세션이 없는 경우 로봇이 콘솔 세션에 로그인하여 구동하고 작업 종료 후 세션을 닫음 로봇이 RDP 세션에 로그인하여 구동하고 작업 중료 후 세션을 닫음
동일한 사용자가 active 콘솔 세션을 가지고 있는 경우 로봇이 이미 존재하는 콘솔 세션에서 구동됨 로봇이 이미 존재하는 콘솔 세션에서 구동됨
동일한 사용자가 active RDP 세션을 가지고 있는 경우 로봇이 이미 존재하는 RDP 세션을 콘솔 세션으로 변경한 후 구동됨 (RDP 창은 닫히게 됨) 로봇이 이미 존재하는 RDP 세션에서 구동됨
다른 사용자가 active 콘솔 세션을 가지고 있는 경우 오류 발생
Could not start executor. The requested resource is in use. (Exception from HRESULT: 0x800700AA)
로봇이 RDP 세션에 로그인하여 구동하고 작업 중료 후 세션을 닫음
2 Likes

정말감사합니다 이것때매 헤매고있었는데 이상하게 영어로는 아무리 찾아도 이런 내용을 못찾겠더라고요 그런데 이렇게 한국어로 잘 정리된 글이 있었다니! 감사합니다

1 Like