Сеанс0 изоляции в Windows 2008 / Windows7 - PullRequest
0 голосов
/ 03 августа 2010

У меня есть приложение C ++, которое использовало Mutex, Events, Semaphores для синхронизации.Хотя это приложение размещено на сервере Windows 2008 / Windows 7, оно не запускается с удаленного клиента.Я использовал клиент telnet для удаленного подключения к этому приложению и увидел, что сервер telnet работает в сеансе 0, и поэтому он пытается запустить мое приложение в сеансе 0. Мое приложение пытается вызвать OpenMutex, чтобы открыть мьютекс, который был создан другим приложением, работающимлокально (в сеансе 1).

Я могу заставить свое приложение работать, добавив «Global \» к имени мьютекса.Я ищу способ запуска приложения без внесения изменений в код.Это вообще возможно?Можно ли запустить службу telnet в сеансе 1.

CreateMutex (& sa, FALSE, Buffer, "MyMutexName"));
Я могу изменить это на CreateMutex (& sa, FALSE, SYS_ID2 (szSysIdBuffer, "Global \ MyMutexName "));но есть ли другой способ сделать это изменение.Спасибо

1 Ответ

0 голосов
/ 04 августа 2010

Вам, вероятно, известен документ http://www.microsoft.com/whdc/system/sysinternals/session0changes.mspx, в котором описаны проблемы с изоляцией сеанса 0.Старый способ сделать сервис интерактивным, который описан в http://msdn.microsoft.com/en-us/library/ms683502.aspx, не работает в Widows 7, потому что службы терминалов активны по умолчанию.Префикс «Global \», который вы сейчас используете, действительно лучший .Чтобы понять сложность другого возможного способа, вы можете прочитать следующее Процесс с правами администратора, запущенный при входе пользователя в систему .

...