로그온 스크립트나 GPO 또는 무엇을 통해 원격 데스크톱을 서버에 로깅합니까?

로그온 스크립트나 GPO 또는 무엇을 통해 원격 데스크톱을 서버에 로깅합니까?

여기서의 목표는 로그인 시 일부 환경 변수(시간, 사용자 이름, 컴퓨터 이름 등)를 캡처하는 간단한 .NET 애플리케이션을 시작하는 것입니다. 이 .NET 애플리케이션은 Windows "사용자 로그아웃" 이벤트를 구독합니다.

시작 시 애플리케이션은 위의 변수를 캡처하고 내 데이터베이스에 레코드를 생성합니다. 로그아웃 시(캡처 중) 동일한 레코드의 다른 필드를 로그아웃 시간으로 업데이트합니다.

위의 내용은 내가 원하는 대로 정확하게 작동합니다. 바이너리를 시작하면 초기 로그 항목이 생성된 다음 로그아웃 이벤트를 기다리고 동일한 레코드가 업데이트됩니다.

제한 사항, .NET 바이너리는 공유 지점(\server\share\myapp\v1)에 존재할 수 있어야 합니다. 따라서 애플리케이션을 (\server\share\myapp\v2)로 업데이트하고 GPO/로그온 스크립트만 업데이트할 수 있습니다. .

내 초기 생각은 \domaincontroller\sysvol\ 디렉터리를 사용하여 바이너리를 저장한 다음 내 응용 프로그램에 대한 호출을 포함하도록 모든 사용자 계정을 업데이트하는 것이었습니다. 이 접근 방식에 결함이 있습니까?

내 질문은 이렇습니다. 첫째, 위의 내 생각에 문제가 있습니까? 둘째, 그렇다면 서버에서 세션이 시작될 때마다 이 응용 프로그램이 시작되도록 하는 가장 좋은 방법(그룹 정책 등을 통해)은 무엇입니까?

답변1

세션이 시작될 때마다 실행하려면 그룹 정책 기반 로그온 스크립트를 사용하면 됩니다. 우리가 발견한 한 가지 주의 사항은 적용되는 컴퓨터 개체 GPO에 대해 '루프백 처리'가 켜져 있는 경우 사용자 GPO에 지정된 스크립트가 두 번 실행되는 것처럼 보인다는 것입니다. 결과적으로 이 경우를 처리하기 위해 로그온 스크립트를 수정해야 했습니다.

저는 .NET 이벤트 구독에 익숙하지 않기 때문에 애플리케이션 파일이 전체 세션 동안 열려 있다는 뜻인지는 모르겠습니다. 그렇다면 잠금 해제 문제로 인해 앱 업데이트가 매우 어려울 것입니다. 50개의 스테이션이 로그인되어 있으면 앱에 50개의 쓰기 거부 잠금이 설정되어 앱 업데이트가 더 어려워집니다. 이는 앱을 sysvol(실제로는 GPO 자체)에 유지하는 것이 도움이 될 수 있는 한 가지 사례입니다. 해당 사례를 더 잘 처리하기 때문입니다.

그러나 이는 로그아웃 시 다시 실행되어 공유 상태로 유지하는 것이 좋다는 의미입니다.

답변2

sysvol에서 실행하는 데는 아무런 문제가 없습니다.

그리고 gpo 로그온 스크립트를 생성하면 기본적으로 정확히 해당 작업이 수행되고 실행도 보장됩니다. 일반적으로 터미널 서버에는 여러 개의 gpo가 있으며 그 중 하나는 로그온 스크립트를 실행하고 그룹 정책 루프백 처리 모드를 지정합니다.

관련 정보