2013-09-10 2 views
0

Я пытаюсь сделать следующее:Дистанционно инициирование блокнота экземпляра в качестве интерактивного процесса

computer   computer 
    A    B 
    |    | Computer B is logged off 
    |--login-------->| 
    |    | Computer B logs in as an interactive user 
    |<------SUCESS---| 
    |-Start notepad->| 
    |    | Computer B shows desktop with notepad instance open. 

Session0 изоляция препятствует мне показать блокнота как интерактивный пользователь.

Я пробовал много решений, но никто не работает. Я попытался получить токен, используя WMI (http://msdn.microsoft.com/en-us/library/ms257337(v=vs.80).aspx) , но он не работает.

Я попытался использовать функцию LogonUser (http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx), но это не сработает.

Я пробовал несколько решений по следующей ссылке: Unlock Windows workstation programmatically Но ничего не работает.

Каков способ сделать это?

ответ

0

Вы должны создать agent application, который запускается автоматически при входе пользователя. Удаление ярлыка в exe-файл приложения в папке Startup под папкой All Users должно быть достаточно.

Это приложение должно подключаться к вашим службам Windows и ждать команд.

Вы можете сделать 2 процесса связи через Names Pipes и .NET Remoting.

В итоге у вас будет 2 приложения, в которых работает N + 1. 1 главная услуга и 1 агент для каждого интерактивного сеанса.

+0

Вы пропустили точку: я хочу, чтобы блокнот отображался как интерактивный процесс. Это решение предполагает, что компьютер должен быть в интерактивном режиме (зарегистрирован или показывать рабочий стол) для работы. Если я запустим экземпляр блокнота, он ничего не покажет на рабочем столе. –

+0

«Это решение предполагает, что компьютер должен находиться в интерактивном режиме». Если это не так, как бы вы хотели, чтобы «блокнот отображался как интерактивный процесс»? –

+0

программно входить в систему на компьютере B, когда он показывает рабочий стол, скажите компьютеру B, чтобы запустить блокнот под зарегистрированным пользователем. (см. диаграмму последовательности в моем вопросе) –

0

Похоже, что невозможно полностью олицетворять интерактивного пользователя программным путем, чтобы получить физическую консоль и связанные с ней конструкции GDI.

Похоже, что единственный способ сделать это - включить автоматический вход в интерактивный сеанс и реорганизовать службу, чтобы поговорить с новым клиентским компонентом в интерактивном сеансе. Чтобы устранить недостаток безопасности, Microsoft рекомендует внедрить замену оболочки, чтобы поместить сервер в режим «Киоск» при входе в систему (т. Е. Без доступа к проводнику без соответствующих учетных данных).

Я прошел через Windows 7 SDK «сеанс 0 изоляции». В руководстве говорится, что мы должны использовать функцию CreateProcessAsUser для создания процесса на рабочем столе запрашивающего пользователя. Я попробовал предложенное решение, но мы должны войти в систему как пользователь, указанный в вызове CreateProcessAsUser, чтобы увидеть процесс в интерактивном режиме.

Смежные вопросы