WTSEnumerateSessions не возвращает сессии
Изначальная задача:
Запустить на удаленном ПК блокнот (т.е. отловить интерактивную сессию и в ней запустить)
Как это работает:
Есть 2 приложения. 1 - сервис, 2 - приложение, которое регистрирует и стартует сервис.
Оба приложения копируются на конечный пк и через WMI вызывается "запускатор сервиса". (т.е. сервис создается локально, на конечном ПК)
Внутри сервис вызывает WTSEnumerateSessions и дергает с нее активную сессию. Тут все ок
Как это не работает:
Есть 1 приложение - сервис. Приложение копируется на конечный ПК, но
регистрация и запуск сервиса происходит на клиентском приложении. (т.е. сервис создается удаленно) Далее сервис работает с совершенно тем же кодом как и в первом случае, только WTSEnumerateSessions не возвращает списка сессий (GetLastWinError = 0, т.е. дело не в правах. Он их просто не видит), соответственно запуска блокнота не происходит.
IntPtr server = IntPtr.Zero;
server = WTSOpenServer(ServerName); --изначально этой строки не было. И все работает в первом варианте. Но добавление не решило для второго
IntPtr ppSessionInfo = IntPtr.Zero;
Int32 count = 0;
Int32 retval = WTSEnumerateSessions(server, 0, 1, ref ppSessionInfo, ref count);
В обоих случаях сервисы на удаленном ПК работают от имени СИСТЕМА
Вопрос собственно:
список сессий не возвращается потому, что сервис в этом случае создается удаленно?
Как то можно обойти?
Решено: не там проверял результат WTSEnumerateSessions. ppSessionInfo кастился в int, и работало норм на первом сервисе. А на втором почему то не влазило в инт, и падало в оверфлоу