2009-03-11 2 views
2

현재 로그온 한 사용자 (활성 창 또는 마지막 마우스 움직임과 같은)에서 정보를 검색해야하는 C# 서비스를 작성하고 있습니다. user32.dll을 사용하여 이러한 정보를 검색 할 수 있다는 것을 이미 알았지 만이 메서드는 메서드를 호출하는 사용자 컨텍스트에서만 작동합니다.서비스에서 로그온 한 사용자의 활성 창을 얻는 방법

내 서비스는 자신에 대한 정보 만 검색 할 수 있지만 "실제 사용자"정보는 검색 할 수 없습니다. 또한 WTSEnumerateSessions, OpenWindowStation, EnumDesktops 등을 사용하여이 작업을 수행 할 수 있어야한다고 들었지만이 작업을 수행하는 방법을 보여주는 예제는 찾지 못했습니다.

아무도 내 목표를 달성하는 데 실마리가 있습니까?

답변

4

사용자 세션에서 실행중인 앱의 경우와 비슷합니다. 잘 작동하는 서비스는 그런 사용자를 기웃 거리며서는 안됩니다. 거기에 (나는 솔직히 모르겠다) 할 수있는 방법이 될 수 있지만, 그것은 매우 적절한 소리하지 않습니다.

최근 버전의 Windows에서는 콘솔 세션 (세션 0)이 관리자 목적으로 제한되어 있으며 사용자는 (정상적으로) 거기에 있지 않음에 유의하십시오. 0 개, 1 개 또는 다수의 비 콘솔 세션이있을 수 있습니다.

+0

실제로. 나는이 방법을 너무 좋아하지 않지만 앱이 사용자 세션에서 실행되면 사용자는이를 취소 할 수 있습니다. 서비스로 실행되는 경우이를 방지 할 수 있습니다. – Marcus

+0

서비스를 다시 시작하면됩니다. – Samuel

+0

나는 사용자 응용 프로그램과 추가 서비스를 만드는 것에 대해서도 생각했지만 사용자 자격 증명없이 서비스가 사용자 세션에서 응용 프로그램을 다시 시작할 수있는 방법은 무엇입니까? – Marcus