Я создал службу, которая работает как пользователь локальной системы. Эта служба запускает и отслеживает приложение Silverlight вне браузера, используя собственное взаимодействие и метод CreateProcessAsUser() (чтобы запустить его от имени вошедшего в данный момент пользователя, а не от локальной системы). Я могу получить дескриптор порожденного процесса и выполнять такие действия, как Kill(), однако мне стало известно, что служба не может получить дескриптор главного окна дочернего приложения, потому что дочернее приложение работает под другим пользователем. Я работаю на Windows 7.
Моя конечная цель - правильно реагировать на то, когда процесс перестает отвечать (т.е. Process.Responding == false), чтобы я мог убить приложение и перезапустить его. Однако для Process.Responding требуется дескриптор главного окна процесса (точнее, Process.MainWindowHandle), однако в этом сценарии Process.MainWindowHandle всегда возвращает 0.
Я в тупике здесь. Есть ли способ для одного пользователя получить дескриптор окна для процесса, работающего от имени другого пользователя в Win 7?
Заранее спасибо за любую помощь.